This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: better Exception message for certain task termination scenario
Type: Stage: resolved
Components: asyncio Versions: Python 3.5
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: Nosy List: asvetlov, gvanrossum, iritkatriel, ovex, vstinner, yselivanov
Priority: normal Keywords:

Created on 2015-10-01 19:57 by ovex, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
test_aio_exception.py ovex, 2015-10-01 19:57
Messages (4)
msg252049 - (view) Author: Oleg (ovex) Date: 2015-10-01 19:57
the weird condition in the code 
causes the task to end with double exception, hard
to understand what really had happened. 

 
producing output like that:


|    i am task..
|    i keep working
|    Exception in callback Task._step()
|    handle: <Handle Task._step()>
|    Traceback (most recent call last):
|      File "/home/http/Python-3.5.0/lib/python3.5/asyncio/tasks.py", line 239, in _step
|        result = coro.send(value)
|    StopIteration
|
|    During handling of the above exception, another exception occurred:
|
|    Traceback (most recent call last):
|      File "/home/http/Python-3.5.0/lib/python3.5/asyncio/events.py", line 125, in _run
|        self._callback(*self._args)
|      File "/home/http/Python-3.5.0/lib/python3.5/asyncio/tasks.py", line 241, in _step
|        self.set_result(exc.value)
|      File "/home/http/Python-3.5.0/lib/python3.5/asyncio/futures.py", line 335, in set_result
|        raise InvalidStateError('{}: {!r}'.format(self._state, self))
|    asyncio.futures.InvalidStateError: FINISHED: <Task finished coro=<task() done, defined at test_aio_exception.py:4> exception=RuntimeError('something bad',)>


it would be good to improve that shutdown procedure 
to pinpoint real reason why and when it got into broken state.

additional info can be found here:
https://groups.google.com/forum/#!topic/python-tulip/-EcYtJXDvSo
msg252054 - (view) Author: Guido van Rossum (gvanrossum) * (Python committer) Date: 2015-10-01 20:11
(OK, issue should be all cleaned up. :-)
msg401019 - (view) Author: Irit Katriel (iritkatriel) * (Python committer) Date: 2021-09-03 23:33
This is doing something different now (on 3.11):

iritkatriel@Irits-MBP cpython % ./python.exe ttt.py
/Users/iritkatriel/src/cpython/ttt.py:5: DeprecationWarning: There is no current event loop
  loop = asyncio.get_event_loop()
i am task..

                [here it hangs and I kill it with ctrl-C]

^CTraceback (most recent call last):
  File "/Users/iritkatriel/src/cpython/ttt.py", line 12, in <module>
    loop.run_forever()
    ^^^^^^^^^^^^^^^^^^
  File "/Users/iritkatriel/src/cpython/Lib/asyncio/base_events.py", line 595, in run_forever
    self._run_once()
    ^^^^^^^^^^^^^^^^
  File "/Users/iritkatriel/src/cpython/Lib/asyncio/base_events.py", line 1841, in _run_once
    event_list = self._selector.select(timeout)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/iritkatriel/src/cpython/Lib/selectors.py", line 562, in select
    kev_list = self._selector.control(None, max_ev, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
Task exception was never retrieved
future: <Task finished name='Task-1' coro=<task() done, defined at /Users/iritkatriel/src/cpython/ttt.py:6> exception=RuntimeError('Task does not support set_exception operation')>
Traceback (most recent call last):
  File "/Users/iritkatriel/src/cpython/ttt.py", line 8, in task
    myself.set_exception(RuntimeError('something bad'))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Task does not support set_exception operation
msg415299 - (view) Author: Andrew Svetlov (asvetlov) * (Python committer) Date: 2022-03-15 21:04
Python 3.7 forbids Task.set_exception() and Task.set_result(), the error message is pretty clear.

Nothing to do here
History
Date User Action Args
2022-04-11 14:58:22adminsetgithub: 69478
2022-03-15 21:04:48asvetlovsetstatus: open -> closed

nosy: + asvetlov
messages: + msg415299

resolution: wont fix
stage: resolved
2021-09-03 23:33:08iritkatrielsetnosy: + iritkatriel
messages: + msg401019
2015-10-01 20:11:55gvanrossumsetmessages: + msg252054
2015-10-01 20:11:20gvanrossumsetmessages: - msg252053
2015-10-01 20:10:37gvanrossumsetmessages: - msg252051
2015-10-01 20:10:22gvanrossumsetmessages: - msg252050
2015-10-01 20:10:08gvanrossumsetfiles: - example_files.tar.gz
2015-10-01 20:09:22gvanrossumsetmessages: + msg252053
2015-10-01 20:07:47ovexsettitle: ssl socket gets into broken state when client exits during handshake -> better Exception message for certain task termination scenario
2015-10-01 20:05:42ovexsetmessages: + msg252051
2015-10-01 20:04:44ovexsetfiles: + example_files.tar.gz
type: enhancement ->
messages: + msg252050

title: better Exception message for certain task termination scenario -> ssl socket gets into broken state when client exits during handshake
2015-10-01 19:57:59ovexcreate