net::telnet and broken pipe

M

Mark Probert

Hi ..

I am getting a consistent broken pipe error on my threaded telnet application
and I am not sure of why.

The error is

.. backtrace:
/usr/local/lib/ruby/1.8/net/telnet.rb:601:
in `syswrite'./bin/sercoll.rb:249:
in `join'./bin/sercoll.rb:249:
in `run_t'./bin/sercoll.rb:249:
in `each'./bin/sercoll.rb:249:
in `run_t'./bin/sercoll.rb:328:
in `run'./bin/sercoll.rb:565

Which is pointing to the following code in telnet.rb

def write(string)
length = string.length
while 0 < length
IO::select(nil, [@sock])
@dumplog.log_dump('>', string[-length..-1]) \
if @options.has_key? ("Dump_log")
length -= @sock.syswrite(string[-length..-1]) ### line 601
end
end

and the following in my code:

def run_t
threads = []
@nodes.each do |ip_addr|
threads << Thread.new(ip_addr) do |nd|
nn, ip, usr, pwd = nd.split(/:/)
GC.start
### wrapper around telnet
collect(usr, pwd, ip, nn, trc, log)
end
end
threads.each { |thr| thr.join } ### line 249
end

The problem seems to be related to the number of threads that I am running
(there is logic to limit threads to 20 and to do the threading in batches..
this problem only occurs if this logic is implemented, however, there is
nothing to indicate that that the logic is broken, just the broken pipe in
the thread join).

$ ruby -v
ruby 1.8.2 (2004-12-25) [sparc-solaris2.8]

Anyone have any thoughts or ideas on how to proceed?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top