Merge branch 'bugfix/core_dump_loop' into 'master'

esp32: Fixes infinite loop caused by exception during core dumping

See merge request !1210
pull/970/head
Ivan Grokhotkov 2017-09-05 11:40:31 +08:00
commit 8433fed7f4
1 zmienionych plików z 11 dodań i 4 usunięć

Wyświetl plik

@ -470,14 +470,21 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame)
esp_gdbstub_panic_handler(frame); esp_gdbstub_panic_handler(frame);
#else #else
#if CONFIG_ESP32_ENABLE_COREDUMP #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 #if CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH
esp_core_dump_to_flash(frame); esp_core_dump_to_flash(frame);
#endif #endif
#if CONFIG_ESP32_ENABLE_COREDUMP_TO_UART && !CONFIG_ESP32_PANIC_SILENT_REBOOT #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 #endif
reconfigureAllWdts(); s_dumping_core = false;
reconfigureAllWdts();
}
#endif /* CONFIG_ESP32_ENABLE_COREDUMP */ #endif /* CONFIG_ESP32_ENABLE_COREDUMP */
esp_panic_wdt_stop(); esp_panic_wdt_stop();
#if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT #if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT