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
This commit is contained in:
Darian Leung 2017-06-20 20:13:13 +08:00
parent 7ed8c66547
commit 21f02a6955

View File

@ -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;