more explicit synchronization.

* test/ruby/test_io.rb (test_race_closed_stream): wait for blocking by r.gets.
  On some systems (for example, high load average systems) can't start Thread
  correctly and can't wait r.gets in invoked Thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2017-04-14 18:14:25 +00:00
parent e4c2f4fa26
commit 2ad7a741c0

View File

@ -3400,16 +3400,19 @@ __END__
def test_race_closed_stream
bug13158 = '[ruby-core:79262] [Bug #13158]'
closed = nil
q = Queue.new
IO.pipe do |r, w|
thread = Thread.new do
begin
q << true
while r.gets
end
ensure
closed = r.closed?
end
end
sleep 0.01
q.pop
sleep 0.1 # wait for blocking by r.gets
r.close
assert_raise_with_message(IOError, /stream closed/) do
thread.join