diff -r 28c1f8480090 Modules/signalmodule.c --- a/Modules/signalmodule.c Tue May 24 14:01:39 2011 +0200 +++ b/Modules/signalmodule.c Tue May 24 18:08:33 2011 +0200 @@ -177,17 +177,18 @@ trip_signal(int sig_num) { unsigned char byte; + Handlers[sig_num].tripped = 1; + if (wakeup_fd != -1) { + byte = (unsigned char)sig_num; + write(wakeup_fd, &byte, 1); + } if (is_tripped) return; /* Set is_tripped after setting .tripped, as it gets cleared in PyErr_CheckSignals() before .tripped. */ is_tripped = 1; Py_AddPendingCall(checksignals_witharg, NULL); - if (wakeup_fd != -1) { - byte = (unsigned char)sig_num; - write(wakeup_fd, &byte, 1); - } } static void