]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117657: Quiet more TSAN warnings due to incorrect modeling of compare/exchange...
authormpage <mpage@meta.com>
Mon, 15 Apr 2024 16:17:55 +0000 (09:17 -0700)
committerGitHub <noreply@github.com>
Mon, 15 Apr 2024 16:17:55 +0000 (12:17 -0400)
Python/pystate.c

index 50454020b8fcabe6352fb3a7f32fd0651bb411a2..ac38866d301d59a47e0967b19b3e4a3e165d0080 100644 (file)
@@ -2003,7 +2003,7 @@ tstate_try_attach(PyThreadState *tstate)
 static void
 tstate_set_detached(PyThreadState *tstate, int detached_state)
 {
-    assert(tstate->state == _Py_THREAD_ATTACHED);
+    assert(_Py_atomic_load_int_relaxed(&tstate->state) == _Py_THREAD_ATTACHED);
 #ifdef Py_GIL_DISABLED
     _Py_atomic_store_int(&tstate->state, detached_state);
 #else
@@ -2068,7 +2068,7 @@ static void
 detach_thread(PyThreadState *tstate, int detached_state)
 {
     // XXX assert(tstate_is_alive(tstate) && tstate_is_bound(tstate));
-    assert(tstate->state == _Py_THREAD_ATTACHED);
+    assert(_Py_atomic_load_int_relaxed(&tstate->state) == _Py_THREAD_ATTACHED);
     assert(tstate == current_fast_get());
     if (tstate->critical_section != 0) {
         _PyCriticalSection_SuspendAll(tstate);