From fb8b0c534ab7e2329e31489e5582626be03409e9 Mon Sep 17 00:00:00 2001 From: Alexey Gerenkov Date: Mon, 4 Sep 2017 20:05:36 +0300 Subject: [PATCH] esp32: Fixes infinite loop caused by exception during core dumping --- components/esp32/panic.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/components/esp32/panic.c b/components/esp32/panic.c index 89b4299838..940c3f8b48 100644 --- a/components/esp32/panic.c +++ b/components/esp32/panic.c @@ -470,14 +470,21 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame) esp_gdbstub_panic_handler(frame); #else #if CONFIG_ESP32_ENABLE_COREDUMP - disableAllWdts(); + static bool s_dumping_core; + if (s_dumping_core) { + panicPutStr("Re-entered core dump! Exception happened during core dump!\r\n"); + } else { + disableAllWdts(); + s_dumping_core = true; #if CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH - esp_core_dump_to_flash(frame); + esp_core_dump_to_flash(frame); #endif #if CONFIG_ESP32_ENABLE_COREDUMP_TO_UART && !CONFIG_ESP32_PANIC_SILENT_REBOOT - esp_core_dump_to_uart(frame); + esp_core_dump_to_uart(frame); #endif - reconfigureAllWdts(); + s_dumping_core = false; + reconfigureAllWdts(); + } #endif /* CONFIG_ESP32_ENABLE_COREDUMP */ esp_panic_wdt_stop(); #if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT