Bug #4957
closedIO.copystream seems make hangup on cygwin (was 2011-07-01 Snapshot build)
Description
2011年7月1日版 Snapshot をビルド→テストしたところ test_io.rb test_thread.rb で 12件エラー。
[~/tmp/snapshot] tar zxf snapshot.tar.gz; cd snapshot; ./configure --enable-shared; make ; make test
test_attr.rb ..
test_autoload.rb ...........
test_block.rb .......................................................
test_class.rb .............................................
test_eval.rb ....................................
test_exception.rb .................................
test_finalizer.rb .
test_flip.rb .
test_flow.rb ................................................
test_fork.rb ....
test_gc.rb ..
test_io.rb ......FFFFFFFFFF.
test_jump.rb .............................
test_literal.rb ......................................................................................................................................................
test_load.rb ..
test_marshal.rb .
test_massign.rb ..................................
test_method.rb ...............................................................................................................................................................................................................................
test_objectspace.rb ...
test_proc.rb ..................................
test_struct.rb .
test_syntax.rb ..........................................................................................................................................................
test_thread.rb ........................FF........................
#245 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#246 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#247 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#248 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#249 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#250 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#251 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#252 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#253 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#254 test_io.rb:
at_exit { p :foo }
   megacontent = "abc" * 12345678
   #File.open("megasrc", "w") {|f| f << megacontent }
   Thread.new { sleep rand*0.2; Process.kill(:INT, $$) }
   r1, w1 = IO.pipe
   r2, w2 = IO.pipe
   t1 = Thread.new { w1 << megacontent; w1.close }
   t2 = Thread.new { r2.read; r2.close }
   IO.copy_stream(r1, w2) rescue nil
   w2.close
   r1.close
   t1.join
   t2.join
   #=> killed by SIGKILL (signal 9) (timeout)  megacontent-copy_stream
#911 test_thread.rb:
th = Thread.new {sleep 2}
th.join(1)
th.join
#=> not finished in 3 seconds
#912 test_thread.rb:
require 'timeout'
th = Thread.new {sleep 2}
begin
Timeout.timeout(1) {th.join}
rescue Timeout::Error
end
th.join
#=> not finished in 3 seconds
FAIL 12/936 tests failed
make: *** [yes-btest-ruby] Error 1
[~/tmp/snapshot] uname -a
CYGWIN_NT-5.1 kenken 1.7.6(0.230/5/3) 2010-08-16 16:06 i686 Cygwin
[~/tmp/snapshot] ./ruby -v
ruby 1.9.3dev (2011-07-01 trunk 32343) [i386-cygwin]
        
           Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          
          
        
        
      
      - Priority changed from Normal to 3
        
           Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          
          
        
        
      
      残念なことに、Cygwinは現在アクティブメンテナーがいないので、誰かがパッチを作ってポストしない限り放置されるかもしれません。
パッチは歓迎します。
        
           Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          Updated by kosaki (Motohiro KOSAKI) over 14 years ago
          
          
        
        
      
      - Subject changed from 2011-07-01 Snapshot build to IO.copystream seems make hangup on cygwin (was 2011-07-01 Snapshot build)
- Category set to core
サブジェクト変えます
        
           Updated by naruse (Yui NARUSE) over 14 years ago
          Updated by naruse (Yui NARUSE) over 14 years ago
          
          
        
        
      
      - Status changed from Open to Feedback
        
           Updated by naruse (Yui NARUSE) over 14 years ago
          Updated by naruse (Yui NARUSE) over 14 years ago
          
          
        
        
      
      - Status changed from Feedback to Closed
#5055 で情報更新されているように思えるので close します