This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new aadf2225f00 xtensa/esp32s3: Abort a faulting user task only with full
signals.
aadf2225f00 is described below
commit aadf2225f00d53ab91f20edcbd4874304818f8c8
Author: Marco Casaroli <[email protected]>
AuthorDate: Wed Oct 28 10:34:54 2026 +0100
xtensa/esp32s3: Abort a faulting user task only with full signals.
ESP32S3_USERFAULT_ABORT is on by default in protected and kernel builds
and selects SIG_DEFAULT, but SIG_DEFAULT depends on ENABLE_ALL_SIGNALS:
sched/signal/sig_default.c calls nxsig_action(), which is built only
with full signal support. With CONFIG_ENABLE_PARTIAL_SIGNALS the
select forces SIG_DEFAULT on, and the link fails:
sig_default.c:416: undefined reference to `nxsig_action'
Make ESP32S3_USERFAULT_ABORT depend on ENABLE_ALL_SIGNALS. Without
it, a fault in user code halts the system, as before the option was
added. Document the condition.
Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <[email protected]>
---
Documentation/platforms/xtensa/esp32s3/index.rst | 3 ++-
arch/xtensa/src/esp32s3/Kconfig | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/Documentation/platforms/xtensa/esp32s3/index.rst
b/Documentation/platforms/xtensa/esp32s3/index.rst
index 4def1ac0ae8..06bfef30c87 100644
--- a/Documentation/platforms/xtensa/esp32s3/index.rst
+++ b/Documentation/platforms/xtensa/esp32s3/index.rst
@@ -901,7 +901,8 @@ In a PROTECTED or a KERNEL build, a user task that makes a
forbidden access,
or takes any other fault that cannot be serviced, receives ``SIGSEGV``. Its
default action terminates only that task, and the rest of the system keeps
running. This is ``CONFIG_ESP32S3_USERFAULT_ABORT``, which is enabled by
-default. A fault in kernel mode still halts the system: a kernel thread, a
+default with full signal support (``CONFIG_ENABLE_ALL_SIGNALS``); without it,
+a fault in user code halts the system. A fault in kernel mode still halts the
system: a kernel thread, a
system call and an interrupt handler have no task that can safely be killed.
The console names the cause of the fault::
diff --git a/arch/xtensa/src/esp32s3/Kconfig b/arch/xtensa/src/esp32s3/Kconfig
index 58c185b5081..67f4f1a2770 100644
--- a/arch/xtensa/src/esp32s3/Kconfig
+++ b/arch/xtensa/src/esp32s3/Kconfig
@@ -959,7 +959,7 @@ config ESP32S3_PAGEFAULT
config ESP32S3_USERFAULT_ABORT
bool "Abort a faulting user task instead of panicking"
default y
- depends on !BUILD_FLAT
+ depends on !BUILD_FLAT && ENABLE_ALL_SIGNALS
select SIG_DEFAULT
select SIG_SIGKILL_ACTION
---help---