Issue #1856: Avoid crashes and lockups when daemon threads run while the

interpreter is shutting down; instead, these threads are now killed when
they try to take the GIL.
This commit is contained in:
Antoine Pitrou 2011-05-04 20:04:29 +02:00
commit fc20b0c65c
6 changed files with 69 additions and 7 deletions

View file

@ -440,6 +440,12 @@ PyEval_RestoreThread(PyThreadState *tstate)
if (gil_created()) {
int err = errno;
take_gil(tstate);
/* _Py_Finalizing is protected by the GIL */
if (_Py_Finalizing && tstate != _Py_Finalizing) {
drop_gil(tstate);
PyThread_exit_thread();
assert(0); /* unreachable */
}
errno = err;
}
#endif