One of our asyncio based application sporadically crash due to this stack trace:
```
File ".../lib/python3.8/asyncio/runners.py", line 48, in run
loop.run_until_complete(loop.shutdown_asyncgens())
File ".../lib/python3.8/asyncio/base_events.py", line 595, in run_until_complete
future = tasks.ensure_future(future, loop=self)
File ".../lib/python3.8/asyncio/tasks.py", line 669, in ensure_future
task = loop.create_task(coro_or_future)
File ".../lib/python3.8/asyncio/base_events.py", line 431, in create_task
task = tasks.Task(coro, loop=self, name=name)
File ".../lib/python3.8/_weakrefset.py", line 83, in add
self._commit_removals()
File ".../lib/python3.8/_weakrefset.py", line 56, in _commit_removals
discard(l.pop())
IndexError: pop from empty list
```
We do not have a reliable repro. From reading the source code, it appears we should never try to pop from empty list:
```
def _commit_removals(self):
l = self._pending_removals
discard = self.data.discard
while l:
discard(l.pop()) # <-- HERE
```
|