[ruby-core:64773] Re: [ruby-trunk - Bug #10193] [Closed] TestIO#test_readpartial_locktmp fails randomly

From: Eric Wong <normalperson@...>
Date: 2014-09-04 20:29:58 UTC
List: ruby-core #64773
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.

In This Thread