Skip to content

Commit 9411590

Browse files
wrongnullsrinivasreddy
authored andcommitted
pythongh-117657: Fix data race in new_reference for free threaded build (pythongh-129665)
1 parent 1b70da5 commit 9411590

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

Objects/object.c

+8-1
Original file line numberDiff line numberDiff line change
@@ -2485,13 +2485,20 @@ new_reference(PyObject *op)
24852485
op->ob_refcnt = 1;
24862486
#endif
24872487
#else
2488-
op->ob_tid = _Py_ThreadId();
24892488
op->ob_flags = 0;
24902489
op->ob_mutex = (PyMutex){ 0 };
2490+
#ifdef _Py_THREAD_SANITIZER
2491+
_Py_atomic_store_uintptr_relaxed(&op->ob_tid, _Py_ThreadId());
2492+
_Py_atomic_store_uint8_relaxed(&op->ob_gc_bits, 0);
2493+
_Py_atomic_store_uint32_relaxed(&op->ob_ref_local, 1);
2494+
_Py_atomic_store_ssize_relaxed(&op->ob_ref_shared, 0);
2495+
#else
2496+
op->ob_tid = _Py_ThreadId();
24912497
op->ob_gc_bits = 0;
24922498
op->ob_ref_local = 1;
24932499
op->ob_ref_shared = 0;
24942500
#endif
2501+
#endif
24952502
#ifdef Py_TRACE_REFS
24962503
_Py_AddToAllObjects(op);
24972504
#endif

Tools/tsan/suppressions_free_threading.txt

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ race:free_threadstate
2222
# These warnings trigger directly in a CPython function.
2323

2424
race_top:assign_version_tag
25-
race_top:new_reference
2625
race_top:_multiprocessing_SemLock_acquire_impl
2726
race_top:list_get_item_ref
2827
race_top:_Py_slot_tp_getattr_hook

0 commit comments

Comments
 (0)