diff options
| author | Eric Snow <ericsnowcurrently@gmail.com> | 2023-08-03 19:51:08 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-03 19:51:08 (GMT) |
| commit | 58ef74186795c56e3ec86e8c8f351a1d7826638a (patch) | |
| tree | 592cedc60a6828d0185d6dc84319cbcc97564e8b /Python/pylifecycle.c | |
| parent | 14fbd4e6b16dcbcbff448b047f7e2faa27bbedba (diff) | |
| download | cpython-58ef74186795c56e3ec86e8c8f351a1d7826638a.zip cpython-58ef74186795c56e3ec86e8c8f351a1d7826638a.tar.gz cpython-58ef74186795c56e3ec86e8c8f351a1d7826638a.tar.bz2 | |
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.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index ceca777..7a17f92 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 */ |
