From: SASADA Koichi Date: 2010-11-05T22:05:10+09:00 Subject: [ruby-dev:42542] Re: [Ruby 1.9-Bug#4027] Signal.trap で busy loop に陥る (2010/11/05 12:49), Tomoyuki Chikanaga wrote: > チケット #4027 が更新されました。 (by Tomoyuki Chikanaga) > > > 残念ながら signal_buff を increment しているところを rb_disable_interrupt()/rb_enable_interrupt() でくくってみた実行体でも再現しました。 > ただ今回は signal_buff.size = -1 ではなくて 1 で逆に余分に increment されたようです。 > > (gdb) p signal_buff > $1 = {cnt = {0 }, size = 1}  ちょっと、状況を見ないで返信しますが、シグナルハンドラ側で何かする必要 は無くて、rb_get_next_signal() 側で rb_disable_interrupt する必要があり ます。... が、もうなってますね。なぜ、こういう事象が起こるんだろう。  というか、rb_get_next_signal() で rb_enable_interrpt() して、シグナル マスクを全部外しているのは、とてもまずいような。というか、メインスレッド のシグナルマスクが外れているのはこれが理由か...? -- // SASADA Koichi at atdot dot net