Skip to content

Commit

Permalink
gh-117657: Quiet TSAN warnings about remaining non-atomic accesses of…
Browse files Browse the repository at this point in the history
… `tstate->state` (#118165)

Quiet TSAN warnings about remaining non-atomic accesses of `tstate->state`
  • Loading branch information
mpage authored Apr 23, 2024
1 parent 0d221e9 commit 2e7771a
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
3 changes: 2 additions & 1 deletion Python/parking_lot.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
2 changes: 1 addition & 1 deletion Python/pystate.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 2e7771a

Please sign in to comment.