Actions
Bug #842
closedendless loop of ObjectSpace.each_object
Description
=begin
nariです.
以下の様にすると無限ループに入ります.
$ ./miniruby -v
ruby 1.9.1 (2008-12-10 revision 20602) [i686-linux]
$ ./miniruby -e "GC.disable; ObjectSpace.each_object{ String.new('a') }"
これがバグなのかどうか分かりませんでした.
GC.disableな状態での動作ですので当然といえば当然なのですが..
修正するパッチを添付いたしますので,ご検討程よろしくお願いします.
Index: gc.c¶
--- gc.c (revision 20602)
+++ gc.c (working copy)
@@ -2089,7 +2089,9 @@
RVALUE *membase = 0;
RVALUE *p, *pend;
volatile VALUE v;
-
int old_dont_gc = dont_gc;
-
if (old_dont_gc) dont_gc = Qfalse;
i = 0;
while (i < heaps_used) {
while (0 < i && (uintptr_t)membase < (uintptr_t)heaps[i-1].membase)
@@ -2123,6 +2125,7 @@
}
} -
dont_gc = old_dont_gc;
return SIZET2NUM(n);
}
=end
Updated by yugui (Yuki Sonoda) about 16 years ago
- Target version set to 1.9.1 Release Candidate
=begin
=end
Updated by yugui (Yuki Sonoda) about 16 years ago
- Status changed from Open to Rejected
=begin
@ Ruby開発会議
- each_object中に生成されたオブジェクトがeach_objectに出現するかどうかは不定
- 出現する場合、生成し続ければ終了しないケースがあることは仕様
=end
Actions
Like0
Like0Like0