Issue #721 has been updated by Roger Pack.
There are two problems here, one being that select doesn't select on all fd's you pass, the other being that an accept call with no remaining fd's available will hang forever [uninterruptibly], in windows only, not linux.
Here's an example:
require 'socket'
require 'tempfile'
s = TCPServer.new '0.0.0.0', 4000
c = TCPSocket.new '127.0.0.1', 4000
fds = []
begin
loop { fds << Tempfile.new('test')}
rescue Exception
end
puts "accepting"
s.accept # should raise
----------------------------------------
http://redmine.ruby-lang.org/issues/show/721
----------------------------------------
http://redmine.ruby-lang.org