aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2025-04-25 10:43:50 -0600
committerGitHub <noreply@github.com>2025-04-25 16:43:50 +0000
commit2a28b21a517775120a7a720adc29cf85111e8bf4 (patch)
treef49e3b09a8005117e59bb7f99ba49cea5a038054 /Python
parent622176513ef7dc41faaa8403b09b799bc5785aee (diff)
downloadcpython-2a28b21a517775120a7a720adc29cf85111e8bf4.tar.gz
cpython-2a28b21a517775120a7a720adc29cf85111e8bf4.zip
gh-132776: Revert Moving memoryview XIData Code to memoryobject.c (gh-132960)
This is a partial revert of gh-132821. It resolves the refleak introduced by that PR.
Diffstat (limited to 'Python')
-rw-r--r--Python/crossinterp.c38
-rw-r--r--Python/crossinterp_data_lookup.h2
-rw-r--r--Python/pylifecycle.c7
3 files changed, 4 insertions, 43 deletions
diff --git a/Python/crossinterp.c b/Python/crossinterp.c
index 7a19cc3da1f..094bbbe54f2 100644
--- a/Python/crossinterp.c
+++ b/Python/crossinterp.c
@@ -1902,25 +1902,7 @@ _PyXI_Fini(PyInterpreterState *interp)
PyStatus
_PyXI_InitTypes(PyInterpreterState *interp)
{
- if (_Py_IsMainInterpreter(interp)) {
- _PyXI_global_state_t *global_state = _PyXI_GET_GLOBAL_STATE(interp);
- if (global_state == NULL) {
- PyErr_PrintEx(0);
- return _PyStatus_ERR(
- "failed to get global cross-interpreter state");
- }
- xid_lookup_init(&global_state->data_lookup);
- }
-
- _PyXI_state_t *state = _PyXI_GET_STATE(interp);
- if (state == NULL) {
- PyErr_PrintEx(0);
- return _PyStatus_ERR(
- "failed to get interpreter's cross-interpreter state");
- }
- xid_lookup_init(&state->data_lookup);
-
- if (init_static_exctypes(&state->exceptions, interp) < 0) {
+ if (init_static_exctypes(&_PyXI_GET_STATE(interp)->exceptions, interp) < 0) {
PyErr_PrintEx(0);
return _PyStatus_ERR(
"failed to initialize the cross-interpreter exception types");
@@ -1933,21 +1915,9 @@ _PyXI_InitTypes(PyInterpreterState *interp)
void
_PyXI_FiniTypes(PyInterpreterState *interp)
{
- _PyXI_state_t *state = _PyXI_GET_STATE(interp);
- if (state != NULL) {
- // We would finalize heap types here too but that leads to ref leaks.
- // Instead, we finalize them in _PyXI_Fini().
- fini_static_exctypes(&state->exceptions, interp);
-
- xid_lookup_fini(&state->data_lookup);
- }
-
- if (_Py_IsMainInterpreter(interp)) {
- _PyXI_global_state_t *global_state = _PyXI_GET_GLOBAL_STATE(interp);
- if (global_state != NULL) {
- xid_lookup_fini(&global_state->data_lookup);
- }
- }
+ // We would finalize heap types here too but that leads to ref leaks.
+ // Instead, we finalize them in _PyXI_Fini().
+ fini_static_exctypes(&_PyXI_GET_STATE(interp)->exceptions, interp);
}
diff --git a/Python/crossinterp_data_lookup.h b/Python/crossinterp_data_lookup.h
index 6e75e247528..48e5d9762cd 100644
--- a/Python/crossinterp_data_lookup.h
+++ b/Python/crossinterp_data_lookup.h
@@ -174,7 +174,6 @@ _lookup_getdata_from_registry(dlcontext_t *ctx, PyObject *obj)
PyTypeObject *cls = Py_TYPE(obj);
dlregistry_t *xidregistry = _get_xidregistry_for_type(ctx, cls);
- assert(xidregistry->initialized);
_xidregistry_lock(xidregistry);
dlregitem_t *matched = _xidregistry_find_type(xidregistry, cls);
@@ -191,7 +190,6 @@ static int
_xidregistry_add_type(dlregistry_t *xidregistry,
PyTypeObject *cls, xidatafunc getdata)
{
- assert(xidregistry->initialized);
dlregitem_t *newhead = PyMem_RawMalloc(sizeof(dlregitem_t));
if (newhead == NULL) {
return -1;
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 4c25198b702..1b9832bff17 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -14,7 +14,6 @@
#include "pycore_global_objects_fini_generated.h" // _PyStaticObjects_CheckRefcnt()
#include "pycore_initconfig.h" // _PyStatus_OK()
#include "pycore_long.h" // _PyLong_InitTypes()
-#include "pycore_memoryobject.h" // _PyMemoryView_InitTypes()
#include "pycore_object.h" // _PyDebug_PrintTotalRefs()
#include "pycore_obmalloc.h" // _PyMem_init_obmalloc()
#include "pycore_optimizer.h" // _Py_Executors_InvalidateAll
@@ -755,11 +754,6 @@ pycore_init_types(PyInterpreterState *interp)
return status;
}
- status = _PyMemoryView_InitTypes(interp);
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
-
return _PyStatus_OK();
}
@@ -1851,7 +1845,6 @@ finalize_interp_types(PyInterpreterState *interp)
_PyTypes_FiniExtTypes(interp);
_PyUnicode_FiniTypes(interp);
_PySys_FiniTypes(interp);
- _PyMemoryView_FiniTypes(interp);
_PyXI_FiniTypes(interp);
_PyExc_Fini(interp);
_PyFloat_FiniType(interp);