From: Dino Viehland Date: Fri, 19 Apr 2024 21:21:01 +0000 (-0700) Subject: [gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough... X-Git-Tag: v3.13.0b1~329 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b45af00bad3449b85c8f54ba7a9474ca1f52de69;p=thirdparty%2FPython%2Fcpython.git [gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong enough semantics (#118111) Use acquire for load of ob_ref_shared --- diff --git a/Objects/object.c b/Objects/object.c index 214e7c5b5679..73a1927263cd 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -374,7 +374,7 @@ _Py_MergeZeroLocalRefcount(PyObject *op) assert(op->ob_ref_local == 0); _Py_atomic_store_uintptr_relaxed(&op->ob_tid, 0); - Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared); + Py_ssize_t shared = _Py_atomic_load_ssize_acquire(&op->ob_ref_shared); if (shared == 0) { // Fast-path: shared refcount is zero (including flags) _Py_Dealloc(op);