Fix “Guru Meditation Error: Core 1 panic’ed (LoadProhibited)”
The ESP32 read from an invalid address — almost always a null or dangling pointer, an out-of-range array index or an object used before begin().
Community draft — report a mistake
What you see
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d1a3c PS : 0x00060630 A0 : 0x800d2b1d A1 : 0x3ffb21f0
...
EXCVADDR: 0x00000008 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Backtrace: 0x400d1a39:0x3ffb21f0 0x400d2b1a:0x3ffb2210 0x400d6b55:0x3ffb2230
ELF file SHA256: 7d3c6f0a1b9e2c44
Rebooting...Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled. Core 1 register dump: PC : 0x400d1a3c PS : 0x00060630 A0 : 0x800d2b1d A1 : 0x3ffb21f0 ... EXCVADDR: 0x00000008 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000 Backtrace: 0x400d1a39:0x3ffb21f0 0x400d2b1a:0x3ffb2210 0x400d6b55:0x3ffb2230 ELF file SHA256: 7d3c6f0a1b9e2c44 Rebooting...
A Guru Meditation Error is the ESP32’s crash report. LoadProhibited means your program tried to read memory at an address that does not exist — the software equivalent of reading a page number that is not in the book.
The register dump looks scary but only two lines matter: EXCVADDR (the bad address) and the Backtrace (where it happened). Decode the backtrace and you will usually see the exact line.
Quick fix — try in order
- 1
Decode the backtrace
Paste the backtrace into the ESP Exception Decoder (or run the core’s decoder in Arduino IDE 2’s Serial Monitor) to get the file and line that crashed.
- 2
Look at EXCVADDR
A small value like 0x00000000–0x00000100 means a null pointer was dereferenced (EXCVADDR is the address that was read). Find which pointer is null at that line.
- 3
Check objects are initialised
Calling methods on a sensor/display object before begin() succeeded, or after begin() returned false, is a classic cause.
- 4
Check array indexes and String use
Reading past the end of an array, or using a char* from a String that went out of scope, reads garbage addresses.
Why it happens
What does LoadProhibited mean?
The CPU tried to load (read) from an address that is not mapped to memory. On Xtensa ESP32 chips that triggers this exception and the panic handler reboots the chip.
Null pointer
Pointers default to 0. If a library returns nullptr on failure and the code does not check, the next read crashes with EXCVADDR near 0.
Dangling pointer
Keeping a pointer to a local variable or a freed buffer and using it later reads memory that now holds something else.
Stack overflow in a task
A task with too little stack can corrupt pointers. If the crash mentions a stack canary, see stack canary watchpoint.
Board-specific notes
ESP32-C3 / C6 (RISC-V): The same bug shows as “Guru Meditation Error: Core 0 panic’ed (Load access fault)”. Decode it the same way.
Did this fix it?
Thanks — that helps us keep this page right.