まつもと ゆきひろです

In message "[ruby-dev:3237] [BUG] Thread.abort_on_exception"
    on 98/07/09, Keiju ISHITSUKA <keiju / rational.com> writes:

|けいじゅ@日本ラショナルソフトウェアです.
|
|またまたバグです?

そうですね.Thread.abort_on_exception = true の状態で同じコー
ドの2重に実行していました.

パッチを添付します.

で,このパッチを当てるとスレッド内での例外はabortに変換され
ちゃうんで,irbを含めて全体が終了しちゃうんですね.もしかし
たらmain_threadに例外を送りつける方が望ましいのかも知れませ
んが….どう思います?


--- eval.c	1998/07/03 07:06:24	1.1.1.2.2.69
+++ eval.c	1998/07/09 06:49:41
@@ -6250,3 +6283,4 @@
     if (state && th->status != THREAD_TO_KILL && !NIL_P(errinfo)) {
-	if (state == TAG_FATAL || obj_is_kind_of(errinfo, eSystemExit)) {
+	if (state == TAG_FATAL || obj_is_kind_of(errinfo, eSystemExit) ||
+	    thread_abort || curr_thread->abort || RTEST(debug)) {
 	    /* fatal error or global exit within this thread */
@@ -6256,5 +6290,2 @@
 	}
-	else if (thread_abort || curr_thread->abort || RTEST(debug)) {
-	    f_abort();
-	}
 	else {