- unwind() logic attempts to collect all the callee-saved registers including RBP. So, RBP chain tracing is necessary only if this unwind() logic doesn't succeed. - Also, verify whether a given task is not active. This is because for active tasks, RBP saved on the corresponding kernel stacks could be modified. Signed-off-by: HATAYAMA Daisuke <d.hatayama@xxxxxxxxxxxxxx> --- src/libgcore/gcore_x86.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/libgcore/gcore_x86.c b/src/libgcore/gcore_x86.c index 8c129d3..871a9db 100644 --- a/src/libgcore/gcore_x86.c +++ b/src/libgcore/gcore_x86.c @@ -1258,7 +1258,7 @@ static inline void restore_rest(ulong task, struct pt_regs *regs, * could trace the value of bp until its value became a * user-space address. See comments of restore_frame_pointer. */ - if (machdep->flags & FRAMEPOINTER) { + else if ((machdep->flags & FRAMEPOINTER) && !is_task_active(task)) { regs->rbp = restore_frame_pointer(task); } } -- 1.7.4 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility