ПинЛог

Guru Meditation Error: разбор паники ESP32

Строка «Guru Meditation Error: Core 0 panic'ed» означает аппаратное исключение процессора — чаще всего обращение по неверному указателю (LoadProhibited/StoreProhibited) или запуск некорректной инструкции, и лечится это отладкой кода, а не заменой платы.

Возможные причины

  • LoadProhibited/StoreProhibited — обращение по нулевому или битому указателю (null pointer, use-after-free)
  • IllegalInstruction — повреждённая память программы или переполнение стека вызвало прыжок в случайный адрес
  • Переполнение стека задачи FreeRTOS при рекурсии или больших локальных массивах
  • Обращение к памяти PSRAM/flash до её инициализации
  • Гонка данных между задачами при работе с общими указателями без синхронизации

Что сделать

  1. Скопируйте полный вывод паники, включая Backtrace, из Serial Monitor сразу после сброса.
  2. Расшифруйте адреса из Backtrace через инструмент idf.py monitor (автоматическая декодировка) или esp-idf-monitor/addr2line вручную.
  3. Проверьте код рядом с указанной функцией на использование указателей после освобождения памяти (free/delete) или до их инициализации.
  4. Увеличьте размер стека проблемной задачи FreeRTOS при подозрении на переполнение (параметр stack size в xTaskCreate).
  5. Включите опцию Core Debug Level в Arduino IDE (Verbose) для более подробного вывода в момент падения.
  6. Изолируйте участок кода тестами: закомментируйте подозрительный блок и проверьте, повторяется ли паника.

Когда менять железо

Аппаратная замена почти никогда не требуется — Guru Meditation Error практически всегда указывает на ошибку в прикладном коде, а не на дефект чипа.

Не официальная поддержка Espressif Systems. Точные названия регистров и опций сверяйте с версией вашего SDK/ядра.

Связанные материалы