Hye-Shik Chang's fix for Bug 875692.
Improve signal handling, especially when using threads, by forcing an early
re-execution of PyEval_EvalFrame() "periodic" code when things_to_do is not
cleared by Py_MakePendingCalls().
M Misc/NEWS
M Python/ceval.c
diff --git a/Python/ceval.c b/Python/ceval.c
index 4d26a7a..85e3518 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -786,6 +786,12 @@
why = WHY_EXCEPTION;
goto on_error;
}
+ if (things_to_do)
+ /* MakePendingCalls() didn't succeed.
+ Force early re-execution of this
+ "periodic" code, possibly after
+ a thread switch */
+ _Py_Ticker = 0;
}
#ifdef WITH_THREAD
if (interpreter_lock) {