UART on ESP32 - panic error
Hi all.
I'm using the Espressif DevKitC with ESP32-WROVER-B module.
I'm using this micropython version: esp32spiram-20190529-v1.11.bin
I'm trying this code:
from machine import UART
uart = UART(1, 115200)
First line, the import, works fine. But the second line of code show this error and after micropython is rebooted:
I (31142) uart: ALREADY NULL
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
The complete output is this:
from machine import UART
uart = UART(1, 115200)
I (335976) uart: ALREADY NULL
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x400d3e80 PS : 0x00060730 A0 : 0x800dd94e A1 : 0x3ffc1af0
A2 : 0x0000044d A3 : 0x3ff49054 A4 : 0x00000009 A5 : 0xffffffff
A6 : 0xffffffff A7 : 0x00000012 A8 : 0x800d3e80 A9 : 0x3ffc1ad0
A10 : 0xcccccccc A11 : 0x00060723 A12 : 0x00060720 A13 : 0x00000000
A14 : 0xffffffff A15 : 0x00000012 SAR : 0x00000017 EXCCAUSE: 0x0000001c
EXCVADDR: 0xcccccccd LBEG : 0x400972ac LEND : 0x400972b7 LCOUNT : 0xffffffffBacktrace: 0x400d3e80:0x3ffc1af0 0x400dd94b:0x3ffc1b10 0x400df8d1:0x3ffc1b40 0x400dc381:0x3ffc1b60 0x400e95fd:0x3ffc1b80 0x400e05a4:0x3ffc1c20 0x400dc519:0x3ffc1c80 0x400dc546:0x3ffc1ca0 0x400f9a42:0x3ffc1cc0 0x400f9c9c:0x3ffc1d60 0x400f1714:0x3ffc1da0 0x40092e35:0x3ffc1dd0
Rebooting...
ets Jun 8 2016 00:22:57rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4928
ho 0 tail 12 room 4
load:0x40078000,len:10188
load:0x40080400,len:6736
entry 0x400806e8
I (501) spiram: Found 64MBit SPI RAM device
I (501) spiram: SPI RAM mode: flash 40m sram 40m
I (501) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (507) cpu_start: Pro cpu up.
I (511) cpu_start: Application information:
I (516) cpu_start: Compile time: 07:47:57
I (521) cpu_start: Compile date: May 29 2019
I (526) cpu_start: ESP-IDF: v3.3-beta1-268-g5c88c5996
I (533) cpu_start: Starting app cpu, entry point is 0x40082e48
I (524) cpu_start: App cpu up.
I (1398) spiram: SPI SRAM memory test OK
I (1399) heap_init: Initializing. RAM available for dynamic allocation:
I (1399) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1405) heap_init: At 3FFB9DD0 len 00026230 (152 KiB): DRAM
I (1412) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1418) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1424) heap_init: At 40097B1C len 000084E4 (33 KiB): IRAM
I (1431) cpu_start: Pro cpu start user code
I (107) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
MicroPython v1.11 on 2019-05-29; ESP32 module with ESP32
Type "help()" for more information.
What is wrong?
Thank you so much.
esp32/panichandler: Support building against IDFv5.4.2.
Summary
A small follow-up to #14086, which implemented a wrapper around the built-in IDF panic handler to print additional MicroPython-specific information.
The IDF panic handler resets the watchdog timeout to prevent the printing of the error message from being cut off by a WDT reset. We use the exact same function call in our wrapper function for the same purpose.
In IDFv5.4.2 the function used for this was changed (from esp_panic_handler_reconfigure_wdts, see here, to esp_panic_handler_feed_wdts, see here, specifically in this commit), and thus this PR introduces that same change into our wrapper.
Testing
My previously described method for triggering a crash no longer works, so here's an updated version:
from io import IOBase
class CrashingUART(IOBase):
IRQ_RXIDLE = 0
def irq(self, handler, trigger, hard=False):
pass
from network import PPP
ppp = PPP(CrashingUART())
ppp.active(True)
ppp.connect()
This results in the following output:
A fatal error occurred. The crash dump printed below may be used to help
determine what caused it. If you are not already running the most recent
version of MicroPython, consider upgrading. New versions often fix bugs.
To learn more about how to debug and/or report this crash visit the wiki
page at: https://github.com/micropython/micropython/wiki/ESP32-debugging
MPY version : v1.26.0-preview-278-g9f0024b31c on 2025-06-30
IDF version : v5.4.2
Machine : <custom board> with ESP32S3
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x420246fb PS : 0x00060030 A0 : 0x82024e68 A1 : 0x3fcbea20
A2 : 0x00000010 A3 : 0x00000000 A4 : 0x3fcbeb14 A5 : 0x3c1dd0a0
A6 : 0x00000002 A7 : 0x00000001 A8 : 0x820246fb A9 : 0x3fcbea00
A10 : 0x00000000 A11 : 0x0000000e A12 : 0x0000000f A13 : 0x00000002
A14 : 0x00000001 A15 : 0x00000200 SAR : 0x00000002 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000008 LBEG : 0x40056f5c LEND : 0x40056f72 LCOUNT : 0x00000000
Backtrace: 0x420246f8:0x3fcbea20 0x42024e65:0x3fcbea60 0x42027f96:0x3fcbea80 0x4202ff34:0x3fcbeb30 0x42030263:0x3fcbeb80 0x42058cbe:0x3fcbeba0 0x42058d09:0x3fcbebe0 0x4210c9f9:0x3fcbec00 0x4204710d:0x3fcbec30 0x420173ed:0x3fcbec60 0x4201756a:0x3fcbec80 0x4210c195:0x3fcbecb0 0x42020f2f:0x3fcbecd0 0x42020f8b:0x3fcbed00 0x4201e75b:0x3fcbed20 0x42016fd9:0x3fcbed40 0x420172d9:0x3fcbed60 0x42016e51:0x3fcbed80 0x420a38e3:0x3fcbeda0 0x4200987d:0x3fcbedc0
Decoded backtrace:
0x420246f8: gc_alloc at /micropython/py/gc.c:771
0x42024e65: m_malloc_maybe at /micropython/py/malloc.c:100
0x42027f96: mp_obj_new_exception_msg_vlist at /micropython/py/objexcept.c:479
0x4202ff34: mp_raise_msg_varg at /micropython/py/runtime.c:1727
0x42030263: mp_load_method at /micropython/py/runtime.c:1264 (discriminator 1)
(inlined by) mp_load_method at /micropython/py/runtime.c:1235 (discriminator 1)
0x42058cbe: iobase_read_write at /micropython/py/modio.c:58
0x42058d09: iobase_write at /micropython/py/modio.c:79
0x4210c9f9: mp_stream_rw at /micropython/py/stream.c:58
0x4204710d: network_ppp_output_callback at /micropython/ports/esp32/network_ppp.c:279
0x420173ed: pppos_output_last at /esp-idf/components/lwip/lwip/src/netif/ppp/pppos.c:917
0x4201756a: pppos_write at /esp-idf/components/lwip/lwip/src/netif/ppp/pppos.c:242
0x4210c195: ppp_write at /esp-idf/components/lwip/lwip/src/netif/ppp/ppp.c:1006
0x42020f2f: fsm_sconfreq at /esp-idf/components/lwip/lwip/src/netif/ppp/fsm.c:757
0x42020f8b: fsm_lowerup at /esp-idf/components/lwip/lwip/src/netif/ppp/fsm.c:102
(inlined by) fsm_lowerup at /esp-idf/components/lwip/lwip/src/netif/ppp/fsm.c:91
0x4201e75b: lcp_lowerup at /esp-idf/components/lwip/lwip/src/netif/ppp/lcp.c:475
0x42016fd9: ppp_start at /esp-idf/components/lwip/lwip/src/netif/ppp/ppp.c:753
0x420172d9: pppos_connect at /esp-idf/components/lwip/lwip/src/netif/ppp/pppos.c:342
0x42016e51: ppp_do_connect at /esp-idf/components/lwip/lwip/src/netif/ppp/ppp.c:465
(inlined by) ppp_connect at /esp-idf/components/lwip/lwip/src/netif/ppp/ppp.c:286
0x420a38e3: pppapi_do_ppp_connect at /esp-idf/components/lwip/lwip/src/netif/ppp/pppapi.c:277
0x4200987d: tcpip_thread_handle_msg at /esp-idf/components/lwip/lwip/src/api/tcpip.c:166
(inlined by) tcpip_thread at /esp-idf/components/lwip/lwip/src/api/tcpip.c:148