diff --git a/ChangeLog b/ChangeLog index b17b133f7c..bb7a132b20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Jul 12 14:07:46 2011 KOSAKI Motohiro + + * signal.c (install_sighandler): fixed a race. + Tue Jul 12 13:49:32 2011 KOSAKI Motohiro * signal.c (sig_trap): don't permit to change a signal handler which diff --git a/signal.c b/signal.c index 7490de9f82..d98aa03b53 100644 --- a/signal.c +++ b/signal.c @@ -1008,10 +1008,12 @@ install_sighandler(int signum, sighandler_t handler) { sighandler_t old; + rb_disable_interrupt(); old = ruby_signal(signum, handler); if (old != SIG_DFL) { ruby_signal(signum, old); } + rb_enable_interrupt(); } #if defined(SIGCLD) || defined(SIGCHLD)