From 56cd62c04a7fbd9d923de000e6e6734cf8ac9ddc Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 6 Sep 2012 00:59:49 +0200 Subject: Issue #13992: The trashcan mechanism is now thread-safe. This eliminates sporadic crashes in multi-thread programs when several long deallocator chains ran concurrently and involved subclasses of built-in container types. Because of this change, a couple extension modules compiled for 3.2.4 (those which use the trashcan mechanism, despite it being undocumented) will not be loadable by 3.2.3 and earlier. However, extension modules compiled for 3.2.3 and earlier will be loadable by 3.2.4. --- Python/pystate.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Python') diff --git a/Python/pystate.c b/Python/pystate.c index 13923313c0a..42bc3eceafa 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -206,6 +206,9 @@ new_threadstate(PyInterpreterState *interp, int init) tstate->c_profileobj = NULL; tstate->c_traceobj = NULL; + tstate->trash_delete_nesting = 0; + tstate->trash_delete_later = NULL; + if (init) _PyThreadState_Init(tstate); -- cgit v1.2.3