summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-08-02 21:23:15 (GMT)
committerGitHub <noreply@github.com>2023-08-02 21:23:15 (GMT)
commit12d1c494ae236e1a1ce8ae8084f8f9a6b6eb8295 (patch)
tree04603038424d677bbc0b5af513f6d6d4bd9bc7da /Python
parentf7e16d74adffb8bc890530caebf0a08a6ea89d36 (diff)
downloadcpython-12d1c494ae236e1a1ce8ae8084f8f9a6b6eb8295.zip
cpython-12d1c494ae236e1a1ce8ae8084f8f9a6b6eb8295.tar.gz
cpython-12d1c494ae236e1a1ce8ae8084f8f9a6b6eb8295.tar.bz2
[3.12] gh-107471: Fix Refleaks in test_import (gh-107569) (#107571)
gh-107471: Fix Refleaks in test_import (gh-107569) gh-107184 introduced a refleak in test_import.SubinterpImportTests (specifically test_singlephase_check_with_setting_and_override and test_single_init_extension_compat). We fix it here by making sure _testsinglephase is removed from sys.modules whenever we clear the runtime's internal state for the module. The underlying problem is strictly contained in the internal function _PyImport_ClearExtension() (AKA _testinternalcapi.clear_extension()), which is only used in tests. (This also fixes an intermittent segfault introduced in the same place, in test_disallowed_reimport.) (cherry picked from commit 017f047183fa33743f7e36c5c360f5c670032be3) Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
Diffstat (limited to 'Python')
-rw-r--r--Python/import.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/Python/import.c b/Python/import.c
index f8f01f1..3f3f2a2 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1080,6 +1080,7 @@ _extensions_cache_delete(PyObject *filename, PyObject *name)
However, this decref would be problematic if the module def were
dynamically allocated, it were the last ref, and this function
were called with an interpreter other than the def's owner. */
+ assert(_Py_IsImmortal(entry->value));
entry->value = NULL;
finally: