Intermittent deadlock in test_misc.test_cancel_sleep (macOS only?)
shamrin opened this issue · comments
Observation
I managed to replicate the deadlock on my Mac, but running the following in 6 console windows, simultaneously. It takes a few minutes to get to a deadlock:
while true; do pytest tests/test_misc.py; done
(By the way, Ctrl-C does nothing.)
We have seen the deadlock in GitHub Actions as well:
...
2021-01-07T13:36:00.2183290Z ../tests/test_misc.py::TestMisc::test_err2 PASSED [ 2%]
2021-01-07T13:36:00.2328220Z ../tests/test_misc.py::TestMisc::test_run3 PASSED [ 2%]
2021-01-07T13:45:34.4670010Z ##[error]The operation was canceled.
...
https://github.com/python-trio/trio-asyncio/runs/1662700976
Analysis
It deadlocks because of combination of two things:
- in
test_cancel_sleep
thedo_no_run
callback sometimes runsh.cancel()
(timer inaccuracy?) raise Exceptions("should not run")
triggerswait_task_rescheduled
abort_cb
callback inrun_aio_future
and the task never gets scheduled again.
trio-asyncio/tests/test_misc.py
Lines 256 to 271 in b93c320