diff options
author | Victor Stinner <vstinner@python.org> | 2022-01-21 12:05:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-21 12:05:26 (GMT) |
commit | ea38e436fe1e585fb8c1f0badf5482f525b7f9ff (patch) | |
tree | 6ec2a9fba659376e62c80b2f596479de4c0a4793 | |
parent | 54610bb448a9cf5be77d53b66169fca4c11be6cb (diff) | |
download | cpython-ea38e436fe1e585fb8c1f0badf5482f525b7f9ff.zip cpython-ea38e436fe1e585fb8c1f0badf5482f525b7f9ff.tar.gz cpython-ea38e436fe1e585fb8c1f0badf5482f525b7f9ff.tar.bz2 |
bpo-46417: Call _PyDebug_PrintTotalRefs() later (GH-30744)
"python -X showrefcount" now shows the total reference count after
clearing and destroyed the main Python interpreter. Previously, it
was shown before.
Py_FinalizeEx() now calls _PyDebug_PrintTotalRefs() after
finalize_interp_delete().
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst | 3 | ||||
-rw-r--r-- | Python/pylifecycle.c | 12 |
2 files changed, 9 insertions, 6 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst b/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst new file mode 100644 index 0000000..c7e2ee3 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2022-01-21-12-24-14.bpo-46417.i3IqMf.rst @@ -0,0 +1,3 @@ +``python -X showrefcount`` now shows the total reference count after clearing +and destroyed the main Python interpreter. Previously, it was shown before. +Patch by Victor Stinner. diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 0b1f471..5572f61 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1862,12 +1862,6 @@ Py_FinalizeEx(void) /* dump hash stats */ _PyHash_Fini(); -#ifdef Py_REF_DEBUG - if (show_ref_count) { - _PyDebug_PrintTotalRefs(); - } -#endif - #ifdef Py_TRACE_REFS /* Display all objects still alive -- this can invoke arbitrary * __repr__ overrides, so requires a mostly-intact interpreter. @@ -1895,6 +1889,12 @@ Py_FinalizeEx(void) finalize_interp_clear(tstate); finalize_interp_delete(tstate->interp); +#ifdef Py_REF_DEBUG + if (show_ref_count) { + _PyDebug_PrintTotalRefs(); + } +#endif + #ifdef Py_TRACE_REFS /* Display addresses (& refcnts) of all objects still alive. * An address can be used to find the repr of the object, printed |