Patch 1413181, by Gabriel Becedillas.

PyThreadState_Delete():  if the auto-GIL-state machinery knows about
the thread state, forget it (since the thread state is being deleted,
continuing to remember it can't help, but can hurt if another thread
happens to get created with the same thread id).

I'll backport to 2.4 next.
This commit is contained in:
Tim Peters 2006-02-27 17:15:31 +00:00
parent 8622e93eab
commit f4e6928c4d
2 changed files with 10 additions and 0 deletions

View File

@ -230,6 +230,12 @@ Core and builtins
unicode instance if the argument is not an instance of basestring and
calling __str__ on the argument returns a unicode instance.
- Patch #1413181: changed ``PyThreadState_Delete()`` to forget about the
current thread state when the auto-GIL-state machinery knows about
it (since the thread state is being deleted, continuing to remember it
can't help, but can hurt if another thread happens to get created with
the same thread id).
Extension Modules
-----------------

View File

@ -262,6 +262,10 @@ PyThreadState_Delete(PyThreadState *tstate)
if (tstate == _PyThreadState_Current)
Py_FatalError("PyThreadState_Delete: tstate is still current");
tstate_delete_common(tstate);
#ifdef WITH_THREAD
if (autoTLSkey && PyThread_get_key_value(autoTLSkey) == tstate)
PyThread_delete_key_value(autoTLSkey);
#endif /* WITH_THREAD */
}