From: "William E. Rubin" Date: 2005-12-09T04:07:35+09:00 Subject: invalid arg to sysread deep within protocol.rb I just made a script that fetches certain web pages, using Net::HTTP, over and over in a loop. Everything worked fine, for about 5000 iterations, but then the following error was thrown (this is in Ruby 1.8.3): C:/Ruby/lib/ruby/1.8/net/protocol.rb:133:in `sysread' C:/Ruby/lib/ruby/1.8/net/protocol.rb:133:in `rbuf_fill' C:/Ruby/lib/ruby/1.8/timeout.rb:45:in `timeout' C:/Ruby/lib/ruby/1.8/timeout.rb:62:in `timeout' C:/Ruby/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill' C:/Ruby/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' C:/Ruby/lib/ruby/1.8/net/protocol.rb:126:in `readline' C:/Ruby/lib/ruby/1.8/net/http.rb:1988:in `read_status_line' C:/Ruby/lib/ruby/1.8/net/http.rb:1977:in `read_new' C:/Ruby/lib/ruby/1.8/net/http.rb:1046:in `request' C:/Ruby/lib/ruby/1.8/net/http.rb:944:in `request_get' The appropriate part in protocol.rb is this: def rbuf_fill timeout(@read_timeout) { @rbuf << @io.sysread(1024) } end So sysread suddenly considers "1024" to be an invalid number of bytes to read? After having considered it valid on each of the previous 5000 iterations? Any clues? Thanks.