gh-125221: Fix free-threading data race in object.__reduce_ex__ (#125267)

This commit is contained in:
Sam Gross 2024-10-11 03:56:01 -04:00 committed by GitHub
parent c1913effee
commit b12e99261e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 15 deletions

View file

@ -2372,6 +2372,14 @@ _PyTypes_InitTypes(PyInterpreterState *interp)
}
}
// Cache __reduce__ from PyBaseObject_Type object
PyObject *baseobj_dict = _PyType_GetDict(&PyBaseObject_Type);
PyObject *baseobj_reduce = PyDict_GetItemWithError(baseobj_dict, &_Py_ID(__reduce__));
if (baseobj_reduce == NULL && PyErr_Occurred()) {
return _PyStatus_ERR("Can't get __reduce__ from base object");
}
_Py_INTERP_CACHED_OBJECT(interp, objreduce) = baseobj_reduce;
// Must be after static types are initialized
if (_Py_initialize_generic(interp) < 0) {
return _PyStatus_ERR("Can't initialize generic types");