diff options
| author | Matthias Klose <doko@ubuntu.com> | 2004-12-01 07:36:58 +0000 |
|---|---|---|
| committer | Matthias Klose <doko@ubuntu.com> | 2004-12-01 07:36:58 +0000 |
| commit | c57bd881ea65d7cce7df7ddd9600718c8e1ea405 (patch) | |
| tree | dcfb6f0484617f4dd37c7cc49b8652cca298b6aa | |
| parent | b7754e120b85901761e0183dcb9ff6bd2b125254 (diff) | |
| download | cpython-git-c57bd881ea65d7cce7df7ddd9600718c8e1ea405.tar.gz | |
Taken from 2.4/HEAD:
- 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().
| -rw-r--r-- | Misc/NEWS | 4 | ||||
| -rw-r--r-- | Python/ceval.c | 6 |
2 files changed, 10 insertions, 0 deletions
@@ -36,6 +36,10 @@ Core and builtins - Bug #845802: Python crashed when __init__.py is a directory. +- 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(). + Extension modules ----------------- diff --git a/Python/ceval.c b/Python/ceval.c index 035520a593..d98dbe11d3 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -785,6 +785,12 @@ eval_frame(PyFrameObject *f) 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; } #if !defined(HAVE_SIGNAL_H) || defined(macintosh) /* If we have true signals, the signal handler |
