Tracker SoM panic 13 stack overflow in Device OS: PC hits FirmwareUpdate::process()

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

Any support I can get on this please?

Thank you