diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2025-04-25 10:43:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-25 16:43:50 +0000 |
commit | 2a28b21a517775120a7a720adc29cf85111e8bf4 (patch) | |
tree | f49e3b09a8005117e59bb7f99ba49cea5a038054 /Python | |
parent | 622176513ef7dc41faaa8403b09b799bc5785aee (diff) | |
download | cpython-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.c | 38 | ||||
-rw-r--r-- | Python/crossinterp_data_lookup.h | 2 | ||||
-rw-r--r-- | Python/pylifecycle.c | 7 |
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); |