mirror of
https://github.com/python/cpython.git
synced 2026-01-26 21:03:34 +00:00
gh-143424: Fix assertion in _PyMutex_LockTimed (gh-143439)
The assertion doesn't necessarily hold for `threading.Lock`, so allow the lock to be unlocked if `_PY_LOCK_PYTHONLOCK` is set on the flags.
This commit is contained in:
parent
d745b60ef2
commit
841b7482dd
@ -124,8 +124,11 @@ _PyMutex_LockTimed(PyMutex *m, PyTime_t timeout, _PyLockFlags flags)
|
||||
&entry, (flags & _PY_LOCK_DETACH) != 0);
|
||||
if (ret == Py_PARK_OK) {
|
||||
if (entry.handed_off) {
|
||||
// We own the lock now.
|
||||
assert(_Py_atomic_load_uint8_relaxed(&m->_bits) & _Py_LOCKED);
|
||||
// We own the lock now. thread.Lock allows other threads
|
||||
// to concurrently release the lock so we cannot assert that
|
||||
// it is locked if _PY_LOCK_PYTHONLOCK is set.
|
||||
assert(_Py_atomic_load_uint8_relaxed(&m->_bits) & _Py_LOCKED ||
|
||||
(flags & _PY_LOCK_PYTHONLOCK) != 0);
|
||||
return PY_LOCK_ACQUIRED;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user