gh-117657: Quiet TSAN warning about a data race between start_the_world() and tstate_try_attach() (#117828)
TSAN erroneously reports a data race between the `_Py_atomic_compare_exchange_int` on `tstate->state` in `tstate_try_attach()` and the non-atomic load of `tstate->state` in `start_the_world`. The `_Py_atomic_compare_exchange_int` fails, but TSAN erroneously treats it as a store.
This commit is contained in:
@@ -2248,7 +2248,8 @@ start_the_world(struct _stoptheworld_state *stw)
|
||||
PyThreadState *t;
|
||||
_Py_FOR_EACH_THREAD(stw, i, t) {
|
||||
if (t != stw->requester) {
|
||||
assert(t->state == _Py_THREAD_SUSPENDED);
|
||||
assert(_Py_atomic_load_int_relaxed(&t->state) ==
|
||||
_Py_THREAD_SUSPENDED);
|
||||
_Py_atomic_store_int(&t->state, _Py_THREAD_DETACHED);
|
||||
_PyParkingLot_UnparkAll(&t->state);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user