gh-140263: Fix data race in test_lock_two_threads (gh-140264)

Clang-20 detects a data race between the unlock and the non-atomic
read of the lock state. Use a relaxed load for the assertion to avoid
the race.
This commit is contained in:
Sam Gross 2025-10-20 09:58:05 -04:00 committed by GitHub
parent e4f6445f30
commit f11ec6e643
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -91,7 +91,8 @@ test_lock_two_threads(PyObject *self, PyObject *obj)
} while (v != 3 && iters < 200); } while (v != 3 && iters < 200);
// both the "locked" and the "has parked" bits should be set // both the "locked" and the "has parked" bits should be set
assert(test_data.m._bits == 3); v = _Py_atomic_load_uint8_relaxed(&test_data.m._bits);
assert(v == 3);
PyMutex_Unlock(&test_data.m); PyMutex_Unlock(&test_data.m);
PyEvent_Wait(&test_data.done); PyEvent_Wait(&test_data.done);