This is an automated email from the ASF dual-hosted git repository.

ligd 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 ed8007ac40 sched/signal: exit sig action when tcb group is null
ed8007ac40 is described below

commit ed8007ac4090faede8ea9785ccb4e0c7e684f6b5
Author: zhangyuan29 <zhangyua...@xiaomi.com>
AuthorDate: Thu Oct 10 20:13:46 2024 +0800

    sched/signal: exit sig action when tcb group is null
    
    nxsig_action will use tcb group when group release,
    so check tcb group when do sig action.
    
    [ap] dump_assert_info: Assertion failed : at file: signal/sig_action.c:205 
task: ofonod process: Kernel 0xec89d5
    [ap] sched_dumpstack: backtrace:
    [ap] sched_dumpstack: [29] [<0x66e2e2>] backtrace_unwind+0x105/0x108
    [ap] sched_dumpstack: [29] [<0x660272>] sched_backtrace+0x41/0x48
    [ap] sched_dumpstack: [29] [<0x61c4dc>] sched_dumpstack+0x33/0x80
    [ap] sched_dumpstack: [29] [<0x6023e4>] _assert+0x19b/0x39c
    [ap] sched_dumpstack: [29] [<0x61b7e4>] __assert+0x7/0x10
    [ap] sched_dumpstack: [29] [<0x6071a2>] nxsig_action+0x119/0x248
    [ap] sched_dumpstack: [29] [<0x6072d8>] sigaction+0x7/0x24
    [ap] sched_dumpstack: [29] [<0x66a072>] signal+0x4d/0x80
    [ap] sched_dumpstack: [29] [<0x100fd36>] signalfd_file_close+0x35/0x60
    [ap] sched_dumpstack: [29] [<0x64a7d8>] file_close+0x1b/0x44
    [ap] sched_dumpstack: [29] [<0x649ac0>] files_putlist+0x2b/0x70
    [ap] sched_dumpstack: [29] [<0x60491a>] group_leave+0x99/0xe4
    [ap] sched_dumpstack: [29] [<0x605df8>] nxtask_exithook+0x4f/0xf4
    [ap] sched_dumpstack: [29] [<0x603ca0>] _exit+0x33/0x3c
    [ap] sched_dumpstack: [29] [<0x61ecf0>] abort+0x7/0xc
    
    Signed-off-by: zhangyuan29 <zhangyua...@xiaomi.com>
---
 sched/signal/sig_action.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/sched/signal/sig_action.c b/sched/signal/sig_action.c
index c3064292f5..731ff9c70c 100644
--- a/sched/signal/sig_action.c
+++ b/sched/signal/sig_action.c
@@ -238,9 +238,17 @@ int nxsig_action(int signo, FAR const struct sigaction 
*act,
    * execution, no special precautions should be necessary.
    */
 
-  DEBUGASSERT(rtcb != NULL && rtcb->group != NULL);
+  DEBUGASSERT(rtcb != NULL);
+
   group = rtcb->group;
 
+  /* If the value of group is null, the task may have exited */
+
+  if (group == NULL)
+    {
+      return -EINVAL;
+    }
+
   /* Verify the signal number */
 
   if (!GOOD_SIGNO(signo))

Reply via email to