sched/backtrace: There is a bug in sched_backtrace().

The return value of sched_backtrace is not saved.

Signed-off-by: wangzhi16 <wangzhi16@xiaomi.com>
This commit is contained in:
wangzhi16
2024-12-03 20:58:01 +08:00
committed by GUIDINGLI
parent d5ed98c11f
commit 635f5bf9ef
+8 -2
View File
@@ -44,6 +44,10 @@ struct backtrace_arg_s
int size; int size;
int skip; int skip;
bool need_restore; bool need_restore;
/* The return value of up_backtrace() */
int stacksize;
}; };
/**************************************************************************** /****************************************************************************
@@ -76,7 +80,9 @@ static int sched_backtrace_handler(FAR void *cookie)
leave_critical_section(flags); leave_critical_section(flags);
return up_backtrace(tcb, arg->buffer, arg->size, arg->skip); arg->stacksize = up_backtrace(tcb, arg->buffer, arg->size, arg->skip);
return OK;
} }
#endif #endif
@@ -133,7 +139,7 @@ int sched_backtrace(pid_t tid, FAR void **buffer, int size, int skip)
arg.skip = skip; arg.skip = skip;
ret = nxsched_smp_call_single(tcb->cpu, ret = nxsched_smp_call_single(tcb->cpu,
sched_backtrace_handler, sched_backtrace_handler,
&arg); &arg) < 0 ? 0 : arg.stacksize;
} }
else else
#endif #endif