check if the thread is finalizing after retaking the GIL

This commit is contained in:
Benjamin Peterson 2014-06-16 22:59:07 -07:00
parent 6637565298
commit 17548dda51
1 changed files with 7 additions and 0 deletions

View File

@ -1267,6 +1267,13 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
/* Other threads may run now */
take_gil(tstate);
/* Check if we should make a quick exit. */
if (_Py_Finalizing && _Py_Finalizing != tstate) {
drop_gil(tstate);
PyThread_exit_thread();
}
if (PyThreadState_Swap(tstate) != NULL)
Py_FatalError("ceval: orphan tstate");
}