From: Alexey Gerenkov Date: Mon, 4 Sep 2017 17:05:36 +0000 (+0300) Subject: esp32: Fixes infinite loop caused by exception during core dumping X-Git-Tag: v3.1-dev~318^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fb8b0c534ab7e2329e31489e5582626be03409e9;p=esp-idf esp32: Fixes infinite loop caused by exception during core dumping --- 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