From: nobu.nakada@... Date: 2002-09-21T20:47:39+09:00 Subject: [ruby-dev:18330] Re: rubicon on EWS4800 なかだです。 At Sat, 21 Sep 2002 20:14:03 +0900, Koji Arai wrote: > rb_thread_remove() した後 > > - 略 - > > | else if (th->safe < 4 && (thread_abort || th->abort || RTEST(ruby_debug))) { > | VALUE err = rb_exc_new(rb_eSystemExit, 0, 0); > | error_print(); > | /* exit on main_thread */ > | rb_thread_raise(1, &err, main_thread); > > の rb_thread_raise() の中で、curr_thread が save_context さ > れて落ちてる? すでに死んでるスレッドのコンテキストを保存する必要はないってこ とかも。 Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.331 diff -u -2 -p -r1.331 eval.c --- eval.c 17 Sep 2002 13:52:45 -0000 1.331 +++ eval.c 21 Sep 2002 11:44:55 -0000 @@ -9038,5 +9038,5 @@ rb_thread_raise(argc, argv, th) } - if (THREAD_SAVE_CONTEXT(curr_thread)) { + if (!rb_thread_dead(curr_thread) && THREAD_SAVE_CONTEXT(curr_thread)) { return th->thread; } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦