Preview build — page text is a draft awaiting human review. Code badges come from real compiles. The flasher is real but not yet hardware-tested; the Playground is still a preview.
Crash · ESP32

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().

ESP32ESP32-S3Updated 31 Oct 2026

Community draft — report a mistake

What you see

OutputOutput
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. 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. 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. 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. 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.

↑↓ to move · Enter to open