From eed93ac5bbe8efe895ee5a17cbe05247db6c62d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ga=C5=88o?= Date: Tue, 22 Feb 2022 17:13:45 +0100 Subject: [PATCH] Remove line finalization when coredump is active to avoid coredump failure Closes https://github.com/espressif/esp-idf/issues/8099 --- tools/idf_monitor.py | 6 +++++- tools/idf_monitor_base/constants.py | 15 ++------------- tools/idf_monitor_base/coredump.py | 4 ++++ 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/tools/idf_monitor.py b/tools/idf_monitor.py index 93c672e44e..1155945277 100755 --- a/tools/idf_monitor.py +++ b/tools/idf_monitor.py @@ -210,10 +210,14 @@ class Monitor: # generates an event which will result in the finishing of # the last line. This is fix for handling lines sent # without EOL. + # finalizing the line when coredump is in progress causes decoding issues + # the espcoredump loader uses empty line as a sign for end-of-coredump + # line is finalized only for non coredump data elif event_tag == TAG_SERIAL_FLUSH: self.serial_handler.handle_serial_input(data, self.console_parser, self.coredump, self.gdb_helper, self._line_matcher, - self.check_gdb_stub_and_run, finalize_line=True) + self.check_gdb_stub_and_run, + finalize_line=not self.coredump.in_progress) else: raise RuntimeError('Bad event data %r' % ((event_tag, data),)) diff --git a/tools/idf_monitor_base/constants.py b/tools/idf_monitor_base/constants.py index be68b02930..a3783882d9 100644 --- a/tools/idf_monitor_base/constants.py +++ b/tools/idf_monitor_base/constants.py @@ -1,16 +1,5 @@ -# Copyright 2015-2021 Espressif Systems (Shanghai) CO LTD -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 import os import re diff --git a/tools/idf_monitor_base/coredump.py b/tools/idf_monitor_base/coredump.py index 555194f325..c8ab6b4d73 100644 --- a/tools/idf_monitor_base/coredump.py +++ b/tools/idf_monitor_base/coredump.py @@ -38,6 +38,10 @@ class CoreDump: self.websocket_client = websocket_client self.elf_file = elf_file + @property + def in_progress(self) -> bool: + return bool(self._coredump_buffer) + def _process_coredump(self): # type: () -> None if self._decode_coredumps != COREDUMP_DECODE_INFO: raise NotImplementedError('process_coredump: %s not implemented' % self._decode_coredumps)