From: nobuyoshi nakada Date: 2005-06-09T15:50:05+09:00 Subject: [ruby-dev:26313] Re: rb_gc_mark_threads spin なかだです。 At Thu, 9 Jun 2005 14:41:49 +0900, Tanaka Akira wrote in [ruby-dev:26312]: > th が circular list からはずれている。 これでどうでしょうか。 Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.785 diff -U2 -p -r1.785 eval.c --- eval.c 7 Jun 2005 23:33:22 -0000 1.785 +++ eval.c 9 Jun 2005 06:46:59 -0000 @@ -11948,7 +11948,4 @@ rb_thread_start_0(fn, arg, th) status = th->status; - if (th == main_thread) ruby_stop(state); - rb_thread_remove(th); - if (saved_block) { blk_free(saved_block); @@ -11965,4 +11962,8 @@ rb_thread_terminated(th, state, status) enum thread_status status; { + if (th == main_thread) ruby_stop(state); + rb_thread_remove(th); + if (th == curr_thread) curr_thread = th->next; + if (state && status != THREAD_TO_KILL && !NIL_P(ruby_errinfo)) { th->flags |= THREAD_RAISED; @@ -12040,6 +12041,4 @@ rb_thread_start_1() status = th->status; - if (th == main_thread) ruby_stop(state); - rb_thread_remove(th); rb_thread_terminated(th, state, status); } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦