Project

General

Profile

Bug #568

test_dup(TestIO) may cause infinite loop

Added by Kazuhiro NISHIYAMA over 7 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
ruby -v:
Backport:
2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
[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

History

#1 Updated by Anonymous over 7 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