From 3b3409fb209535e66618cadad318c715d2f91e3f Mon Sep 17 00:00:00 2001 From: David Cermak Date: Thu, 17 Sep 2020 15:08:54 +0200 Subject: [PATCH] idf.py: Fixed gdb target to exit cleanly when no openocd watch task When idf.py gdb starts, it expects openocd was started in the background and creates a thread to watch for openocd errors. when gdb target exits, the debug_ext.py aims to cleanup all threads and processes, but fails with traceback if openocd-watch thread not available, which could happen if openocd started separately. --- tools/idf_py_actions/debug_ext.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/idf_py_actions/debug_ext.py b/tools/idf_py_actions/debug_ext.py index 2b3dd03ec3..57d1829608 100644 --- a/tools/idf_py_actions/debug_ext.py +++ b/tools/idf_py_actions/debug_ext.py @@ -287,7 +287,11 @@ def action_extensions(base_actions, project_path): continue finally: watch_openocd.join() - processes["threads_to_join"].remove(watch_openocd) + try: + processes["threads_to_join"].remove(watch_openocd) + except ValueError: + # Valid scenario: watch_openocd task won't be in the list if openocd not started from idf.py + pass fail_if_openocd_failed = { "names": ["--require-openocd", "--require_openocd"],