mirror of
https://github.com/apache/nuttx.git
synced 2026-10-16 10:39:56 +00:00
Reporting a fault can itself fault. syslog reaches memory the fault being reported may have made unreachable, so esp32s3_pagefault_dispatch() is re-entered from inside its own _alert() and never returns, and the console fills with the same half-printed line forever. Found under Espressif's QEMU, where PSRAM never initialises and the kernel build needs it; the board's PSRAM works, so hardware does not take this path. A fault repeating at the same address and PC is not helped by reporting it again, so the dispatcher tries three times and then halts with interrupts off. esp32s3_userfault_abort() clears the count through esp32s3_pagefault_clear_repeat(): reaching it means the fault was contained, so only unbroken recursion stops the machine, and three probes at one address do not halt a healthy system. Verified under QEMU: 12,958,521 bytes of output in 60 s before, four reports and a halt after. On an ESP32-S3 DevKitC, esp32s3-devkit:kernel_oct, three identical sandbox probes in one boot are all contained. Assisted-by: Claude Code:claude-opus-5-5 Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com> |
||
|---|---|---|
| .. | ||
| arm | ||
| arm64 | ||
| avr | ||
| ceva | ||
| dummy | ||
| hc | ||
| mips | ||
| misoc | ||
| or1k | ||
| renesas | ||
| risc-v | ||
| sim | ||
| sparc | ||
| tricore | ||
| x86 | ||
| x86_64 | ||
| xtensa | ||
| z16 | ||
| z80 | ||
| CMakeLists.txt | ||
| Kconfig | ||