From 9961061811e1fa305a71862565eaabef5148aaee Mon Sep 17 00:00:00 2001 From: Adam Simpkins Date: Mon, 18 Jul 2022 21:22:16 -0700 Subject: [PATCH] Tools: fix a crash in idf_monitor.py If self.elf_exists is false, self.gdb_helper is None, which caused this code to crash. It looks like this guard was missed in e30329ffe21f. Previously the code could crash like this: Traceback (most recent call last): File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 376, in main() File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 367, in main monitor.main_loop() File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 163, in main_loop self._main_loop() File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 268, in _main_loop super()._main_loop() File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 203, in _main_loop self.serial_handler.handle_commands(data, self.target, self.run_make, self.console_reader, File "/usr/local/src/esp-idf/tools/idf_monitor_base/serial_handler.py", line 203, in handle_commands run_make_func('encrypted-flash' if self.encrypted else 'flash') File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 150, in run_make run_make(target, self.make, self.console, self.console_parser, self.event_queue, self.cmd_queue, File "/usr/local/src/esp-idf/tools/idf_monitor.py", line 237, in __exit__ self.serial_reader.gdb_exit = self.gdb_helper.gdb_exit # write gdb_exit flag AttributeError: 'NoneType' object has no attribute 'gdb_exit' --- tools/idf_monitor.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/idf_monitor.py b/tools/idf_monitor.py index cfbb40315c..b990ba3be5 100755 --- a/tools/idf_monitor.py +++ b/tools/idf_monitor.py @@ -234,7 +234,8 @@ class SerialMonitor(Monitor): def __exit__(self, exc_type, exc_val, exc_tb) -> None: # type: ignore """ Use 'with self' to temporarily disable monitoring behaviour """ self.console_reader.start() - self.serial_reader.gdb_exit = self.gdb_helper.gdb_exit # write gdb_exit flag + if self.elf_exists: + self.serial_reader.gdb_exit = self.gdb_helper.gdb_exit # write gdb_exit flag self.serial_reader.start() def _pre_start(self) -> None: