From: Kazuhiro NISHIYAMA Date: 2008-09-16T20:14:04+09:00 Subject: [ruby-dev:36326] [Bug:1.9] test_dup(TestIO) may cause infinite loop 西山和広です。 test_dup(TestIO)で無限ループになってしまうことがあるようです。 straceしてみたところ、1つ目のdupで例外にならなかった場合、 出来たIOが2つ目のdupの中でGCされて、2つ目のdupで出来たIOが 1つ目のdupでGCされて、というはまり方に見えます。 Index: test/ruby/test_io.rb =================================================================== --- test/ruby/test_io.rb (revision 19381) +++ test/ruby/test_io.rb (working copy) @@ -633,7 +633,7 @@ loop {a << IO.pipe} end assert_raise(Errno::EMFILE, Errno::ENFILE, Errno::ENOMEM) do - loop {a[-1][0].dup; a[-1][1].dup} + loop {a << [a[-1][0].dup, a[-1][1].dup]} end a.each do |r, w| r.close unless !r || r.closed? -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)