Actions
Bug #568
closedtest_dup(TestIO) may cause infinite loop
Description
=begin
西山和広です。
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}
-
endloop {a << [a[-1][0].dup, a[-1][1].dup]}
a.each do |r, w|
r.close unless !r || r.closed?
--
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)
=end
Actions
Like0
Like0