Issue #6965 has been reported by h.shirosaki (Hiroshi Shirosaki).

----------------------------------------
Bug #6965: Ramdom test failure for test_pstore_files_are_accessed_as_binary_files
https://bugs.ruby-lang.org/issues/6965

Author: h.shirosaki (Hiroshi Shirosaki)
Status: Assigned
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: test
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-09-01 trunk 36875) [i386-mingw32]


=begin
test_pstore_files_are_accessed_as_binary_files(PStoreTest) sometime fails on ci.rubyinstaller.org.


 2) Error:
 test_pstore_files_are_accessed_as_binary_files(PStoreTest):
 IOError: stream closed
 C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/test/ruby/envutil.rb:60:in
 `read'
 C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/test/ruby/envutil.rb:60:in
 `block in invoke_ruby'
 C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/build/.ext/common/win32ole.rb:13:in
 `call'
 C:/Users/Worker/Jenkins/workspace/ruby-trunk-x64-build/build/.ext/common/win32ole.rb:13:in
 `block in initialize'
 
This happens on both i386-mingw32 and x64-mingw32 test-all jobs:

((<URL:http://ci.rubyinstaller.org/job/ruby-trunk-x86-test-all/14/console>))

((<URL:http://ci.rubyinstaller.org/job/ruby-trunk-x64-test-all/11/console>))


This seems due to timeout(10 seconds) since the test is slow (usually over 5s) on Windows with HDD disk.

 make test-all TESTS="-v test_pstore.rb"

 PStoreTest#test_pstore_files_are_accessed_as_binary_files = 8.33 s = .


If other processes run in parallel, it would be possible to take time over 10s (timeout).
I confirmed same `IOError: stream closed` was raised on my local box by setting shorter timeout.

The reason of `IOError: stream closed` would be that the pipe is closed at ensure block in EnvUtil#invoke_ruby while a thread which reads from the pipe is alive.
If killing threads before closing pipe, Timeout::Error is shown.

It would be nice to know the cause of error easily if Timeout::Error was showen in the case of timeout.

And more longer timeout would be helpful not to fail this test for Windows.

I attached a patch. This increases timeout to 15s.

Luis Lavena also confirmed this patch helped when tested manually on the worker machine.
=end


-- 
http://bugs.ruby-lang.org/