diff -ru Python-2.7.13/Modules/signalmodule.c Python-2.7.13-fixed//Modules/signalmodule.c --- Python-2.7.13/Modules/signalmodule.c 2016-12-17 21:05:07.000000000 +0100 +++ Python-2.7.13-fixed//Modules/signalmodule.c 2017-04-12 17:55:03.759805763 +0200 @@ -313,12 +313,13 @@ } else func = signal_handler; + /* Check for pending signals before changing signal handler */ + if (PyErr_CheckSignals()) return NULL; if (PyOS_setsig(sig_num, func) == SIG_ERR) { PyErr_SetFromErrno(PyExc_RuntimeError); return NULL; } old_handler = Handlers[sig_num].func; - Handlers[sig_num].tripped = 0; Py_INCREF(obj); Handlers[sig_num].func = obj; if (old_handler != NULL)