Hello all,
I’m debugging repeated panic code 13 (stack overflow) on a Tracker SoM (T524), Device OS 6.3.3. I added custom PANIC_INFO publishing and every crash reports the same addresses:
{"code":13,"pc":"0x0004b05c","lr":"0x0004e43b","extra":"0x00000000"}
Code to publish/gather this information:
PanicData pdata = {};
pdata.size = sizeof(pdata); if (panic_get_last_panic_data(&pdata, nullptr) == 0) { g_pendingPanicCode = pdata.code; g_pendingPanicPc = (uint32_t)pdata.pc; g_pendingPanicLr = (uint32_t)pdata.lr; g_pendingPanicExtra = (uint32_t)pdata.extra_code; g_pendingPanicInfo = true; }#ifdef CONNECT_TO_CLOUD
g_pendingPanicCode = panicCode; // This gets published later on to cloud#endif
Using system-part1 symbols built from Device OS 6.3.3, PC resolves to:
particle::protocol::FirmwareUpdate::process() in communication/src/firmware_update.cpp:173
LR resolves to prohibit_xip in hal/src/nRF52840/core_hal.c:333.
These addresses are inside system-part1 flash (0x00028000–0x000b4000), not user firmware. Updates are expected in the project (OTA).
Has anyone seen stack overflows inside FirmwareUpdate::process()? Any suggestions for additional instrumentation or known issues around OTA in 6.3.3?
Thanks in advance,
Matej