From: Eric Wong Date: 2014-09-04T20:29:58+00:00 Subject: [ruby-core:64773] Re: [ruby-trunk - Bug #10193] [Closed] TestIO#test_readpartial_locktmp fails randomly nobu@ruby-lang.org wrote: > Applied in changeset r47353. > > ---------- > test_io.rb: ignore stream closed IOError > > * test/ruby/test_io.rb (test_readpartial_locktmp): stream closed > IOError while reading is not a matter. [Bug #10193] I get EBADF now: TestIO#test_readpartial_locktmp: Errno::EBADF: Bad file descriptor /home/ew/ruby/test/ruby/test_io.rb:2870:in `readpartial' /home/ew/ruby/test/ruby/test_io.rb:2870:in `block (2 levels) in test_readpartial_locktmp' Testing the following: --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -2874,6 +2874,7 @@ End assert_predicate(th, :alive?) w.write(data) Thread.pass while th.alive? + th.join end assert_equal(data, buf, bug6099) rescue RuntimeError # can't modify string; temporarily locked I'm not sure if setting th->waiting_fd for rb_wait_for_single_fd is a good idea. I think any poll/select wrappers should reload fileno from IO objects on EBADF, because th->waiting_fd does not scale.