Revert gh-127266: avoid data races when updating type slots (gh-131174) (gh-133129)

This is triggering deadlocks in test_opcache.  See GH-133130 for stack trace.
This commit is contained in:
Neil Schemenauer 2025-04-28 23:38:29 -07:00 committed by GitHub
parent 219b1f9d1d
commit eecafc3380
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 112 additions and 233 deletions

View file

@ -620,12 +620,6 @@ given type object has a specified feature.
#define Py_TPFLAGS_HAVE_FINALIZE (1UL << 0)
#define Py_TPFLAGS_HAVE_VERSION_TAG (1UL << 18)
// Flag values for ob_flags (16 bits available, if SIZEOF_VOID_P > 4).
#define _Py_IMMORTAL_FLAGS (1 << 0)
#define _Py_STATICALLY_ALLOCATED_FLAG (1 << 2)
#if defined(Py_GIL_DISABLED) && defined(Py_DEBUG)
#define _Py_TYPE_REVEALED_FLAG (1 << 3)
#endif
#define Py_CONSTANT_NONE 0
#define Py_CONSTANT_FALSE 1
@ -782,7 +776,11 @@ PyType_HasFeature(PyTypeObject *type, unsigned long feature)
// PyTypeObject is opaque in the limited C API
flags = PyType_GetFlags(type);
#else
flags = type->tp_flags;
# ifdef Py_GIL_DISABLED
flags = _Py_atomic_load_ulong_relaxed(&type->tp_flags);
# else
flags = type->tp_flags;
# endif
#endif
return ((flags & feature) != 0);
}