[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:14984] [PATCH] stack overflow while GC marking.

From: nobu.nakada@...
Date: 2001-10-23 03:43:40 UTC
List: ruby-dev #14984
なかだです。

 [ruby-talk:22532]の、GCの最中にスタックが溢れてSEGVする件です
が、とりあえずこんなところでどうでしょうか。

$ ./miniruby -e 'x=[]; loop {x=[x]}'
-e:1:in `allocate': stack level too deep (SystemStackError)
        from -e:1
        from -e:1:in `loop'
        from -e:1

* gc.c (rb_gc_mark): stack check while GC marking.


Index: gc.c
===================================================================
RCS file: /cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.72
diff -u -2 -p -r1.72 gc.c
--- gc.c	2001/07/20 15:19:28	1.72
+++ gc.c	2001/10/23 03:32:46
@@ -444,4 +444,8 @@ rb_gc_mark(ptr)
     register RVALUE *obj = RANY(ptr);
 
+    if ((++during_gc & 0xff) == 0) {
+	rb_stack_check();
+    }
+
   Top:
     if (rb_special_const_p((VALUE)obj)) return; /* special const not marked */


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next