Bug #4957

IO.copystream seems make hangup on cygwin (was 2011-07-01 Snapshot build)

Added by Mitsuru FURUI almost 3 years ago. Updated over 2 years ago.

[ruby-dev:44010]
Status:Closed
Priority:Low
Assignee:-
Category:core
Target version:1.9.3
ruby -v:ruby 1.9.3dev (2011-07-01 trunk 32343) [i386-cygwin] Backport:

Description

2011年7月1日版 Snapshot をビルド→テストしたところ testio.rb testthread.rb で 12件エラー。

[~/tmp/snapshot] tar zxf snapshot.tar.gz; cd snapshot; ./configure --enable-shared; make ; make test

testattr.rb ..
test
autoload.rb ...........
testblock.rb .......................................................
test
class.rb .............................................
testeval.rb ....................................
test
exception.rb .................................
testfinalizer.rb .
test
flip.rb .
testflow.rb ................................................
test
fork.rb ....
testgc.rb ..
test
io.rb ......FFFFFFFFFF.
testjump.rb .............................
test
literal.rb ......................................................................................................................................................
testload.rb ..
test
marshal.rb .
testmassign.rb ..................................
test
method.rb ...............................................................................................................................................................................................................................
testobjectspace.rb ...
test
proc.rb ..................................
teststruct.rb .
test
syntax.rb ..........................................................................................................................................................
testthread.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 testio.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 testio.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 testio.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 testio.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 testio.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 testio.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 testio.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 testio.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 testio.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 testthread.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]


Related issues

Related to ruby-trunk - Bug #5055: ruby-1.9.2-p290 Test Error @Cygwin Rejected 07/19/2011
Duplicated by ruby-trunk - Bug #5027: Snapshot(2011-07-14) Build Test Error @Cygwin Closed 07/14/2011

History

#1 Updated by Motohiro KOSAKI almost 3 years ago

  • Priority changed from Normal to Low

#2 Updated by Motohiro KOSAKI almost 3 years ago

残念なことに、Cygwinは現在アクティブメンテナーがいないので、誰かがパッチを作ってポストしない限り放置されるかもしれません。
パッチは歓迎します。

#3 Updated by Motohiro KOSAKI almost 3 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

サブジェクト変えます

#4 Updated by Yui NARUSE over 2 years ago

  • Status changed from Open to Feedback

#5 Updated by Yui NARUSE over 2 years ago

  • Status changed from Feedback to Closed

#5055 で情報更新されているように思えるので close します

Also available in: Atom PDF