From a5615419e7ebb985f62e23f24e2fc205fffa3560 Mon Sep 17 00:00:00 2001 From: "liang.huang" Date: Sat, 18 Jul 2026 11:38:08 +0800 Subject: [PATCH] arch/risc-v: dump backtrace when killing a task with SIGSEGV When riscv_fault_handler() kills a user task with SIGSEGV, it previously produced no stack trace, making the crash hard to diagnose. Call sched_dumpstack() on the killed task when SCHED_BACKTRACE is enabled. Assisted-by: Claude Code:claude-sonnet-5 Signed-off-by: liang.huang --- arch/risc-v/src/common/riscv_exception.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/risc-v/src/common/riscv_exception.c b/arch/risc-v/src/common/riscv_exception.c index 6f5c81b2fd8..3d45d264996 100644 --- a/arch/risc-v/src/common/riscv_exception.c +++ b/arch/risc-v/src/common/riscv_exception.c @@ -119,6 +119,10 @@ static void riscv_fault_handler(uintreg_t cause, void *regs) _alert("Segmentation fault in %s (PID %d: %s)\n", get_task_name(ptcb), tcb->pid, get_task_name(tcb)); +#ifdef CONFIG_SCHED_BACKTRACE + sched_dumpstack(tcb->pid); +#endif + tcb->flags |= TCB_FLAG_FORCED_CANCEL; /* Return to _exit function in privileged mode with argument SIGSEGV */