mirror of
https://github.com/apache/nuttx.git
synced 2026-03-26 18:23:50 +08:00
When pressing Ctrl-C, the foreground process did not receive SIGINT and failed to terminate. The serial driver called nxsig_tgkill(-1, dev->pid, signo) from interrupt context. With pid=-1, nxsig_dispatch() was called with thread=true, which requires stcb->group == this_task()->group. However, in interrupt context, this_task() returns the IDLE task, whose group differs from the target process group. This caused the signal dispatch to fail with -ESRCH. Solution: Replace nxsig_tgkill(-1, pid, signo) with nxsig_kill(pid, signo). nxsig_kill() uses thread=false, which routes through group_signal() without the same-group check, allowing signals to be delivered correctly from interrupt context. Impact: - Fixes Ctrl-C signal delivery in serial console - No API changes - Affects serial driver interrupt handling only Testing: Verified on QEMU ARM64 simulator with serial console Signed-off-by: yinshengkai <yinshengkai@bytedance.com>