From af5d497f72ceaf3f207a8aded028607c4c46a993 Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Mon, 24 May 2021 16:22:02 +0100 Subject: bpo-44032: Delay deletion of stack chunks until thread state is deleted. (GH-26285) --- Python/pystate.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Python/pystate.c b/Python/pystate.c index 36057ee..64dcd57 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 -- cgit v0.12