Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
Ifthreading.Condition.notify() is interrupted just after it releases the waiter lock, but before remove it from the queue, the following calls ofnotify() will fail withRuntimeError: cannot release un-acquired lock. It can block the waiter threads if they do not use timeout.
Lines 375 to 380 in5bc2390
| forwaiterinwaiters_to_notify: | |
| waiter.release() | |
| try: | |
| all_waiters.remove(waiter) | |
| exceptValueError: | |
| pass |
The simplest solution would be to silence a RuntimeError inwaiter.release(). There may be similar issues in other parts of the code.