qasync icon indicating copy to clipboard operation
qasync copied to clipboard

qasync is getting stuck in an infinite loop after an uncaught exception

Open hartytp opened this issue 5 years ago • 4 comments

Summary

When closing an application after an uncaught exception in user code, qasync is getting stuck in an infinite loop at https://github.com/CabbageDevelopment/qasync/blob/cc5abcb8f883bdb2843adf16417e17cef47a25f7/qasync/init.py#L273 due to an unhandled KeyError in a finally block.

NB the line numbers in the traceback below don't match master since I'm a few commits behind (one of the commits added some whitespace).

Full traceback is:

ERROR<8>:qasync._QEventLoop:Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
Traceback (most recent call last):
  File "...\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "...\asyncio\proactor_events.py", line 162, in _call_connection_lost
    self._sock.shutdown(socket.SHUT_RDWR)
OSError: [WinError 10038] An operation was attempted on something that is not a socket
ERROR<8>:qasync._QEventLoop:Exception in callback _ProactorBasePipeTransport._call_connection_lost(None)
handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)>
Traceback (most recent call last):
  File "...lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "...\lib\asyncio\proactor_events.py", line 162, in _call_connection_lost
    self._sock.shutdown(socket.SHUT_RDWR)
OSError: [WinError 10038] An operation was attempted on something that is not a socket
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 262, in timerEvent
  File "...\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "...\lib\asyncio\proactor_events.py", line 299, in _loop_reading
    self._read_fut = self._loop._proactor.recv(self._sock, 32768)
  File "...\wand\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\_windows.py", line 79, in recv
KeyboardInterrupt
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent
KeyError: 15
Traceback (most recent call last):
  File "...\lib\site-packages\qasync-0.11.0-py3.9.egg\qasync\__init__.py", line 264, in timerEvent

hartytp avatar Dec 14 '20 12:12 hartytp

The original error looks like it might be an asyncio error, but I would not expect qasync to get stuck in an infinite loop because of it.

hartytp avatar Dec 14 '20 12:12 hartytp

Could you indicate how you got to that exception ?

SantosJMM avatar Apr 02 '21 21:04 SantosJMM

I'm getting the same one now, but with KeyError: 358.

I think it happened after I added a background flask server on a daemon thread.

When I hit stop in PyCharm, it enters an infinite loop and keeps spamming that error.

serg06 avatar Sep 22 '21 00:09 serg06

If the isssue is still present, please provide a minimal, reproducible example.

hosaka avatar Apr 11 '23 07:04 hosaka