← Fault reference

ESP32 Guru Meditation Error (StoreProhibited): what it means

On ESP32 (Xtensa), "Guru Meditation Error: Core 0 panic'ed (StoreProhibited)" means your firmware tried to WRITE to a memory address it is not allowed to touch — almost always a NULL, freed, or uninitialised pointer.

Read EXCCAUSE and EXCVADDR

StoreProhibited is EXCCAUSE 29 (0x1d). Its read-side twin, LoadProhibited, is 28 (0x1c). EXCVADDR holds the bad address — if it is 0x00000000 you dereferenced a NULL pointer; a small or garbage value usually means an uninitialised or corrupted pointer.

Find the offending code

PC is the faulting instruction and A0 is the return address. Run the backtrace addresses through xtensa-esp32-elf-addr2line (or esp-idf monitor, which decodes it automatically) to get file:line.

Common causes

Writing through a pointer returned by a failed malloc, using a peripheral handle before init, a use-after-free, or writing to a const/flash address. Check every pointer on the faulting line.

Diagnose your crash free →