From 95e26cd461064715eff4549799d72cec5dd828bc Mon Sep 17 00:00:00 2001 From: Alexey Gerenkov Date: Mon, 2 Jul 2018 18:10:34 +0300 Subject: [PATCH] coredump: Fixes exception stack frame structure indicator Initializes exception stack frame EXIT field to indicate stack frame format for 'espcoredump'. --- components/esp32/core_dump.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/esp32/core_dump.c b/components/esp32/core_dump.c index 56ce08b64..078afe93b 100644 --- a/components/esp32/core_dump.c +++ b/components/esp32/core_dump.c @@ -127,6 +127,10 @@ static void esp_core_dump_write(XtExcFrame *frame, core_dump_write_config_t *wri if (tasks[i].pxTCB == xTaskGetCurrentTaskHandleForCPU(xPortGetCoreID())) { // set correct stack top for current task tasks[i].pxTopOfStack = (StackType_t *)frame; + // This field is not initialized for crashed task, but stack frame has the structure of interrupt one, + // so make workaround to allow espcoredump to parse it properly. + if (frame->exit == 0) + frame->exit = -1; ESP_COREDUMP_LOG_PROCESS("Current task EXIT/PC/PS/A0/SP %x %x %x %x %x", frame->exit, frame->pc, frame->ps, frame->a0, frame->a1); }