raiseme() run_coroutine_threadsafe
Traceback (most recent call last):
File "g:\Projects\NowPlaying\test.py", line 18, in <module>
task.result()
File "C:\Program Files\Python312\Lib\concurrent\futures\_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python312\Lib\concurrent\futures\_base.py", line 401, in __get_result
raise self._exception
File "g:\Projects\NowPlaying\test.py", line 6, in raiseme
raise ValueError(42)
ValueError: 42
raiseme2() run_coroutine_threadsafe
Traceback (most recent call last):
File "g:\Projects\NowPlaying\test.py", line 25, in <module>
task.result()
File "C:\Program Files\Python312\Lib\concurrent\futures\_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python312\Lib\concurrent\futures\_base.py", line 401, in __get_result
raise self._exception
TimeoutError
The traceback of the second exception (TimeoutError) is dropeed.
Bug report
Bug description:
The traceback of the second exception (
TimeoutError
) is dropeed.The reason is that
_convert_future_exc
drops the origin exception's traceback: https://github.com/python/cpython/blob/812245ecce2d8344c3748228047bab456816180a/Lib/asyncio/futures.py#L316-L325To fix it, construct the new exception with the original traceback like that:
CPython versions tested on:
3.10, CPython main branch
Operating systems tested on:
Linux, Windows
Linked PRs