Project

General

Profile

Actions

Bug #568

closed

test_dup(TestIO) may cause infinite loop

Added by znz (Kazuhiro NISHIYAMA) about 16 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:36326]

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}
    
  •  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)
=end

Actions

Also available in: Atom PDF

Like0
Like0