From: Yukihiro Matsumoto Date: 2004-12-01T02:33:55+09:00 Subject: [ruby-dev:25005] Re: IO#flush dumps core again まつもと ゆきひろです In message "Re: [ruby-dev:25004] Re: IO#flush dumps core again" on Wed, 1 Dec 2004 01:21:37 +0900, nobu@ruby-lang.org writes: |IO#flushの問題というよりは、trapを跨いだContinuationの呼び出し |が問題だと思うんですが、あってるでしょうか。 signal handler内で作られる継続が問題です。trap_immediateでは 直接signal handlerからハンドラブロックを評価しているのがいけ ないので、以下のようにデフォルトのハンドラだけ直接評価するよ うにしてみました。 --- signal.c 29 Jun 2004 01:31:33 -0000 1.54 +++ signal.c 30 Nov 2004 17:28:16 -0000 1.55 @@ -419,3 +419,3 @@ sighandler(sig) - if (ATOMIC_TEST(rb_trap_immediate)) { + if (trap_list[sig].cmd == 0 && ATOMIC_TEST(rb_trap_immediate)) { IN_MAIN_CONTEXT(signal_exec, sig);