]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117657: Quiet TSAN warnings about remaining non-atomic accesses of `tstate->state...
authormpage <mpage@meta.com>
Tue, 23 Apr 2024 17:20:14 +0000 (10:20 -0700)
committerGitHub <noreply@github.com>
Tue, 23 Apr 2024 17:20:14 +0000 (10:20 -0700)
Quiet TSAN warnings about remaining non-atomic accesses of `tstate->state`

Python/parking_lot.c
Python/pystate.c

index d5877fef56e4d02d06403e37a8654cd24ba8b0e3..b368b500ccdfdb12f6eaa819a3cf677fdab1a7a6 100644 (file)
@@ -194,7 +194,8 @@ _PySemaphore_Wait(_PySemaphore *sema, PyTime_t timeout, int detach)
     PyThreadState *tstate = NULL;
     if (detach) {
         tstate = _PyThreadState_GET();
-        if (tstate && tstate->state == _Py_THREAD_ATTACHED) {
+        if (tstate && _Py_atomic_load_int_relaxed(&tstate->state) ==
+                          _Py_THREAD_ATTACHED) {
             // Only detach if we are attached
             PyEval_ReleaseThread(tstate);
         }
index 06806bd75fbcb27fd2b46d70020515b48de63d8a..bca28cebcc9059edcc70b35584f4f4c93560099d 100644 (file)
@@ -2096,7 +2096,7 @@ _PyThreadState_Suspend(PyThreadState *tstate)
 {
     _PyRuntimeState *runtime = &_PyRuntime;
 
-    assert(tstate->state == _Py_THREAD_ATTACHED);
+    assert(_Py_atomic_load_int_relaxed(&tstate->state) == _Py_THREAD_ATTACHED);
 
     struct _stoptheworld_state *stw = NULL;
     HEAD_LOCK(runtime);