From: Ville Mattila Date: 2001-11-16T04:13:31+09:00 Subject: [ruby-talk:25306] BUG? Solaris select or poll does not recover correctly when signaled Hello all This was perviously under subject: BUG: net/telnet.rb gives select invalid argument excepition http://www.ruby-talk.com/cgi-bin/scat.rb/ruby/ruby-talk/25160 But I want raise this issue again as I think that this really is a ruby bug. Ville Mattila writes: > ts writes: > > > >>>>> "V" == Ville Mattila writes: > > > > V> This is the telnet part of the build script: > > V> begin > > V> tn = Net::Telnet::new({"Host" => build_hosts[platform], > > V> "Timeout" => 480, > > V> "Waittime" => 5 > > V> }){|line| print line} > > Well, I can't reproduce the problem with this script > > > Ok I think I found the cause. We are interrupted in poll then weird things start happen. Here is truss output about the situation 1804: read(6, " e c h o t i m e s t a".., 1048576) = 31 1804: write(1, " e c h o t i m e s t a".., 30) = 30 1804: poll(0xFFBEA628, 1, 480000) = 1 1804: fd=6 ev=POLLRDNORM rev=POLLRDNORM 1804: read(6, " / b i n / s h . . / l".., 1048576) = 129 1804: write(1, " / b i n / s h . . / l".., 128) = 128 1804: Received signal #28, SIGVTALRM, in poll() [caught] 1804: poll(0xFFBEA628, 1, 480000) Err#91 ERESTART 1804: fd=6 ev=POLLRDNORM rev=0x4057 1804: setcontext(0xFFBEA310) 1804: sigprocmask(SIG_SETMASK, 0x000BD250, 0x00000000) = 0 1804: set = 0 0 0 0 1804: write(1, " I n v a l i d a r g u".., 17) = 17 1804: write(1, " / s b / t b / t o o l b".., 82) = 82 1804: write(1, " / s b / t b / t o o l b".., 83) = 83 1804: write(1, " / s b / t b / t o o l b".., 79) = 79 1804: write(1, " / s b / d e v / w o r k".., 63) = 63 1804: write(1, " / s b / d e v / w o r k".., 56) = 56 1804: write(1, " . / s b t o o l s / s b".., 36) = 36 1804: write(1, " . / s b t o o l s / s b".., 36) = 36 1804: write(1, " . / s b t o o l s / s b".., 36) = 36 1804: write(1, " . / s b t o o l s / s b".., 36) = 36 1804: write(1, " . / s b t o o l s / s b".., 36) = 36 1804: write(1, " . / s b t o o l s / s b".., 26) = 26 1804: open("/sb/dev/work/releases/current-releases/sbfc-3.0.3033_linux_fixed_snmp/buildlog.linux", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 ... Will this help to fix ruby at all? - Ville