[Python-checkins] cpython (merge 3.4 -> default): merge 3.4
benjamin.peterson
python-checkins at python.org
Tue Jun 17 08:08:56 CEST 2014
http://hg.python.org/cpython/rev/2ed64ea19d81
changeset: 91235:2ed64ea19d81
parent: 91232:556b37984622
parent: 91234:5ccb6901cf95
user: Benjamin Peterson <benjamin at python.org>
date: Mon Jun 16 23:08:29 2014 -0700
summary:
merge 3.4
files:
Python/pystate.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/Python/pystate.c b/Python/pystate.c
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -423,6 +423,14 @@
Py_FatalError(
"PyThreadState_DeleteCurrent: no current tstate");
_Py_atomic_store_relaxed(&_PyThreadState_Current, NULL);
+ /*
+ Only call tstate_delete_common to have the tstate if we're not finalizing
+ or we're the main thread. The main thread will do this for us. Not calling
+ tstate_delete_common means we won't lock the interpreter head lock,
+ avoiding a possible deadlock with the GIL.
+ */
+ if (!_Py_Finalizing || _Py_Finalizing == tstate)
+ tstate_delete_common(tstate);
if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate)
PyThread_delete_key_value(autoTLSkey);
tstate_delete_common(tstate);
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list