From: Darian Leung Date: Tue, 20 Jun 2017 12:13:13 +0000 (+0800) Subject: Bugfix - Panic Handler not halting when running on both cores X-Git-Tag: v2.1-rc1~3^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=21f02a6955cdf6cd37c6c4018e1ed683a95a9abb;p=esp-idf Bugfix - Panic Handler not halting when running on both cores Bug occurs when core dump destination in menuconfig is set to flash. When programme crashes, xt_unhandled_exception or panicHandler will both trigger commonErrorHandler. commonErrorHandler calls esp_core_dump_to_flash which will attempt to use DPORT functions and hang due to trying to a stall and already stalled processor (already stalled in xt_unhandled_exception and panicHandler). Program will eventually be rebooted when wdt expires. Added esp_dport_access_int_deinit after calls to haltOtherCore() so that DPORT functions don't try to halt and already halted cpu hence preventing hang. Fixes TW#12944 https://github.com/espressif/esp-idf/issues/646 --- diff --git a/components/esp32/panic.c b/components/esp32/panic.c index 4d83864467..4c3db7fa64 100644 --- a/components/esp32/panic.c +++ b/components/esp32/panic.c @@ -197,6 +197,7 @@ void panicHandler(XtExcFrame *frame) return; } haltOtherCore(); + esp_dport_access_int_deinit(); panicPutStr("Guru Meditation Error: Core "); panicPutDec(core_id); panicPutStr(" panic'ed ("); @@ -244,6 +245,7 @@ void panicHandler(XtExcFrame *frame) void xt_unhandled_exception(XtExcFrame *frame) { haltOtherCore(); + esp_dport_access_int_deinit(); if (!abort_called) { panicPutStr("Guru Meditation Error of type "); int exccause = frame->exccause;