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:
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:
(By the way, Ctrl-C does nothing.)
We have seen the deadlock in GitHub Actions as well:
https://github.com/python-trio/trio-asyncio/runs/1662700976
Analysis
It deadlocks because of combination of two things:
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.https://github.com/python-trio/trio-asyncio/blob/b93c32037804298b43cc8c089313a2ef82ca0c22/tests/test_misc.py#L256-L271