Bug #568

test_dup(TestIO) may cause infinite loop

Added by Kazuhiro NISHIYAMA over 6 years ago. Updated about 4 years ago.

[ruby-dev:36326]
Status:Closed
Priority:Low
Assignee:-
ruby -v: Backport:

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

History

#1 Updated by Anonymous over 6 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19396.
=end

Also available in: Atom PDF