[Python-checkins] bpo-44032: Delay deletion of stack chunks until thread state is deleted. (GH-26285)

markshannon webhook-mailer at python.org
Mon May 24 11:22:11 EDT 2021


https://github.com/python/cpython/commit/af5d497f72ceaf3f207a8aded028607c4c46a993
commit: af5d497f72ceaf3f207a8aded028607c4c46a993
branch: main
author: Mark Shannon <mark at hotpy.org>
committer: markshannon <mark at hotpy.org>
date: 2021-05-24T16:22:02+01:00
summary:

bpo-44032: Delay deletion of stack chunks until thread state is deleted. (GH-26285)

files:
M Python/pystate.c

diff --git a/Python/pystate.c b/Python/pystate.c
index 36057ee13bded..64dcd577a0ffd 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -897,13 +897,6 @@ PyThreadState_Clear(PyThreadState *tstate)
     if (tstate->on_delete != NULL) {
         tstate->on_delete(tstate->on_delete_data);
     }
-    _PyStackChunk *chunk = tstate->datastack_chunk;
-    tstate->datastack_chunk = NULL;
-    while (chunk != NULL) {
-        _PyStackChunk *prev = chunk->previous;
-        _PyObject_VirtualFree(chunk, chunk->size);
-        chunk = prev;
-    }
 }
 
 
@@ -936,6 +929,13 @@ tstate_delete_common(PyThreadState *tstate,
     {
         PyThread_tss_set(&gilstate->autoTSSkey, NULL);
     }
+    _PyStackChunk *chunk = tstate->datastack_chunk;
+    tstate->datastack_chunk = NULL;
+    while (chunk != NULL) {
+        _PyStackChunk *prev = chunk->previous;
+        _PyObject_VirtualFree(chunk, chunk->size);
+        chunk = prev;
+    }
 }
 
 static void



More information about the Python-checkins mailing list