aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/pylifecycle.c
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2023-08-03 13:51:08 -0600
committerGitHub <noreply@github.com>2023-08-03 19:51:08 +0000
commit58ef74186795c56e3ec86e8c8f351a1d7826638a (patch)
tree592cedc60a6828d0185d6dc84319cbcc97564e8b /Python/pylifecycle.c
parent14fbd4e6b16dcbcbff448b047f7e2faa27bbedba (diff)
downloadcpython-58ef74186795c56e3ec86e8c8f351a1d7826638a.tar.gz
cpython-58ef74186795c56e3ec86e8c8f351a1d7826638a.zip
gh-107080: Fix Py_TRACE_REFS Crashes Under Isolated Subinterpreters (gh-107567)
The linked list of objects was a global variable, which broke isolation between interpreters, causing crashes. To solve this, we've moved the linked list to each interpreter.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r--Python/pylifecycle.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ceca7776a27..7a17f92b550 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1921,11 +1921,11 @@ Py_FinalizeEx(void)
}
if (dump_refs) {
- _Py_PrintReferences(stderr);
+ _Py_PrintReferences(tstate->interp, stderr);
}
if (dump_refs_fp != NULL) {
- _Py_PrintReferences(dump_refs_fp);
+ _Py_PrintReferences(tstate->interp, dump_refs_fp);
}
#endif /* Py_TRACE_REFS */
@@ -1961,11 +1961,11 @@ Py_FinalizeEx(void)
*/
if (dump_refs) {
- _Py_PrintReferenceAddresses(stderr);
+ _Py_PrintReferenceAddresses(tstate->interp, stderr);
}
if (dump_refs_fp != NULL) {
- _Py_PrintReferenceAddresses(dump_refs_fp);
+ _Py_PrintReferenceAddresses(tstate->interp, dump_refs_fp);
fclose(dump_refs_fp);
}
#endif /* Py_TRACE_REFS */