esp-idf/tools
Frantisek Hrbata 4bc2985aa3 fix: exit gracefully when process started via asyncio is terminated
Currently when process is started through asyncio Runner and it is termited
e.g. with SIGINT(ctrl+c) a traceback is printed instead of gracefully
exit.

Exception ignored in: <function BaseSubprocessTransport.__del__ at 0x7fe980970900>
Traceback (most recent call last):
  File "/usr/lib64/python3.12/asyncio/base_subprocess.py", line 129, in __del__
    self.close()
  File "/usr/lib64/python3.12/asyncio/base_subprocess.py", line 107, in close
    proto.pipe.close()
  File "/usr/lib64/python3.12/asyncio/unix_events.py", line 568, in close
    self._close(None)
  File "/usr/lib64/python3.12/asyncio/unix_events.py", line 592, in _close
    self._loop.call_soon(self._call_connection_lost, exc)
  File "/usr/lib64/python3.12/asyncio/base_events.py", line 793, in call_soon
    self._check_closed()
  File "/usr/lib64/python3.12/asyncio/base_events.py", line 540, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

This is caused because asyncio Runner context in asyncio.run is closing the event
loop and if exception is unhandled in coroutine(run_command) the transport is not
closed before the even loop is closed and we get RuntimeError: Event loop is closed
in the transport __del__ function because it's trying to use the closed
even loop.

Let's catch asyncio.CancelledError in case the process we are trying to
read from is terminated, print message, let the asyncio finish and exit
gracefully.

Closes https://github.com/espressif/esp-idf/issues/13418

Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>
2024-04-22 11:25:51 +02:00
..
ble feat: add requirements.ttfw.txt 2022-08-01 15:52:21 +08:00
catch Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00
ci change(usb_serial_jtag): Add a usb_serial_jtag echo example for how to use usb_serial_jtag APIs, 2024-04-03 17:10:03 +08:00
cmake Merge branch 'fix/xtensa-memset-memcpy_inlining_v5.2' into 'release/v5.2' 2024-03-12 10:58:34 +08:00
docker feat(docker): Add Dockerfile argument for variable clone depth 2023-12-18 17:37:20 +08:00
esp_app_trace fix: Replace deprecated flushregs alias with full gdb command 2023-07-13 09:26:47 +02:00
esp_prov ci: remove ttfw related files 2023-10-16 10:23:09 +02:00
gen_soc_caps_kconfig fix(usb_serial_jtag): Fix issue that boot failed on esp32c3, 2024-03-04 10:19:47 +08:00
idf_py_actions fix: exit gracefully when process started via asyncio is terminated 2024-04-22 11:25:51 +02:00
kconfig_new fix(menuconfig): Prevent Access violation on Windows with Python 3.12 2024-03-08 13:11:25 +01:00
ldgen fix: Fixed KConfig files that were not succesfully checked 2024-02-07 15:09:35 +01:00
mass_mfg docs: Update CN for nvs_flash.rst and flash-encryption.rst 2023-07-14 04:05:53 +00:00
mocks fix(wifi): fix psram enabled but initialized fail issue 2023-12-08 13:08:55 +00:00
requirements fix(gdbgui): Fix support of gdbgui on Unix with Python 3.11 2024-01-05 18:51:50 +01:00
templates/sample_component add new command to idf 2020-09-21 23:38:52 +02:00
test_apps fix(esp_hw_support): Fix the flash I/DROM region PMP protection 2024-04-03 15:48:46 +05:30
test_build_system feat(ci): add test for custom cmake CMAKE_EXECUTABLE_SUFFIX 2023-11-20 10:48:47 +01:00
test_idf_py fix: harden input parsing in component_requirements hint module 2024-01-25 13:37:17 +01:00
test_idf_tools fix(tools): catch more general errors in python dependency checker 2024-02-22 10:23:41 +01:00
test_mkdfu mkdfu.py: Support setting flash parameters 2022-05-27 15:44:56 +02:00
unit-test-app ci: remove ttfw related files 2023-10-16 10:23:09 +02:00
check_python_dependencies.py fix(tools): catch more general errors in python dependency checker 2024-02-22 10:23:41 +01:00
check_term.py check_term: allow alacritty term 2022-05-19 11:10:59 +08:00
detect_python.fish feat: Drop Python 3.7 support 2023-08-08 08:37:29 +02:00
detect_python.sh feat: Drop Python 3.7 support 2023-08-08 08:37:29 +02:00
eclipse-code-style.xml
format.sh ci: add astyle pre-commit check 2023-09-27 08:43:45 +02:00
gdb_panic_server.py feat(tools): remove gdb_panic_server and use just a wrapper for script 2023-08-24 15:20:29 +02:00
gen_esp_err_to_name.py tool: skip test folder when generating esp_err_t table 2022-11-10 10:37:59 +08:00
generate_debug_prefix_map.py build: create BUILD_DIR/prefix_map_gdbinit when enable reproducible build 2021-10-26 10:55:00 +08:00
idf_monitor.py feat(idf_monitor): move idf_monitor to separate repo 2023-02-03 11:20:15 +01:00
idf_size.py tools: Move out idf_size.py in favour of using the esp-idf-size package 2023-03-27 19:40:33 +02:00
idf_tools.py refactor(idf_tools): IDF version is acquired only from version or header file 2024-03-19 15:44:19 +01:00
idf.py feat(tools): Added IDF path order check for Windows platform 2023-10-24 15:34:41 +02:00
install_util.py ci: remove ttfw related files 2023-10-16 10:23:09 +02:00
mkdfu.py tools: remove the dependency on the future package 2022-08-09 16:46:58 +02:00
mkuf2.py feat(tools): move uf2 generation to esptool 2023-10-09 15:38:30 +02:00
python_version_checker.py feat: Drop Python 3.7 support 2023-08-08 08:37:29 +02:00
requirements_schema.json Tools: Make easier the detection of the list of Python features 2022-02-03 19:02:14 +01:00
requirements.json ci: remove ttfw related files 2023-10-16 10:23:09 +02:00
set-submodules-to-github.sh
split_paths_by_spaces.py tools: fixup version references related to paths with spaces 2022-05-02 19:05:47 +02:00
tools_schema.json feat(tools): Option in tools.json to rename toolchanis being downloaded 2023-10-17 12:28:02 +02:00
tools.json feat(tools): update openocd version to v0.12.0-esp32-20240318 2024-04-04 22:41:19 +03:00