From 635f5bf9effc42d9e14eb8bb88fa944ec95d4287 Mon Sep 17 00:00:00 2001 From: wangzhi16 Date: Tue, 3 Dec 2024 20:58:01 +0800 Subject: [PATCH] sched/backtrace: There is a bug in sched_backtrace(). The return value of sched_backtrace is not saved. Signed-off-by: wangzhi16 --- sched/sched/sched_backtrace.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sched/sched/sched_backtrace.c b/sched/sched/sched_backtrace.c index bdf95d2974f..40c993c0a05 100644 --- a/sched/sched/sched_backtrace.c +++ b/sched/sched/sched_backtrace.c @@ -44,6 +44,10 @@ struct backtrace_arg_s int size; int skip; 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); - return up_backtrace(tcb, arg->buffer, arg->size, arg->skip); + arg->stacksize = up_backtrace(tcb, arg->buffer, arg->size, arg->skip); + + return OK; } #endif @@ -133,7 +139,7 @@ int sched_backtrace(pid_t tid, FAR void **buffer, int size, int skip) arg.skip = skip; ret = nxsched_smp_call_single(tcb->cpu, sched_backtrace_handler, - &arg); + &arg) < 0 ? 0 : arg.stacksize; } else #endif