https://github.com/python/cpython/commit/b45af00bad3449b85c8f54ba7a9474ca1f52de69
commit: b45af00bad3449b85c8f54ba7a9474ca1f52de69
branch: main
author: Dino Viehland <[email protected]>
committer: DinoV <[email protected]>
date: 2024-04-19T14:21:01-07:00
summary:

[gh-117657] _Py_MergeZeroLocalRefcount isn't loading ob_ref_shared with strong 
enough semantics (#118111)

Use acquire for load of ob_ref_shared

files:
M Objects/object.c

diff --git a/Objects/object.c b/Objects/object.c
index 214e7c5b567928..73a1927263cdcb 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);

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to