From: matz@... (Yukihiro Matsumoto) Date: 1999-08-16T11:52:12+09:00 Subject: [ruby-dev:7686] Re: [BUG] Segmentation fault まつもと ゆきひろです In message "[ruby-dev:7680] [BUG] Segmentation fault" on 99/08/16, Yasuhiro Fukuma writes: |class/module blockの中で新しいスレッドを起こしたあと、GCが発生すると |落ちるようです。 確かに。以下のパッチで直るようです。ADJ()を複数回適用してい ました。あーあ。ついでにGCの無駄なスキャンを減らしてみました。 --- eval.c 1999/08/13 05:45:04 1.2 +++ eval.c 1999/08/16 02:51:29 @@ -6042,4 +6042,5 @@ /* mark data in copied stack */ + if (th == curr_thread) return; if (th->status == THREAD_KILLED) return; if (th->stk_len == 0) return; /* stack not active, no need to mark. */ @@ -6055,5 +6056,5 @@ rb_gc_mark_frame(frame); if (frame->tmp) { - struct FRAME *tmp = ADJ(frame->tmp); + struct FRAME *tmp = frame->tmp; while (tmp && tmp != top_frame) {