diff options
author | David Smith <dsmith@redhat.com> | 2009-06-11 16:29:13 -0500 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2009-06-11 16:29:13 -0500 |
commit | 5dce84d4fe74644ef76004ff0402510b289a2778 (patch) | |
tree | 613deb4149bdfee88f48cc28d7a4b124946e5777 /runtime/stack-x86_64.c | |
parent | 43229357282fd51eb1a3c7742932068873c27270 (diff) | |
parent | 749269040630f0f250f431a258e7967f54dc9a5c (diff) | |
download | systemtap-steved-5dce84d4fe74644ef76004ff0402510b289a2778.tar.gz systemtap-steved-5dce84d4fe74644ef76004ff0402510b289a2778.tar.xz systemtap-steved-5dce84d4fe74644ef76004ff0402510b289a2778.zip |
Merge commit 'origin/master' into pr7043
Diffstat (limited to 'runtime/stack-x86_64.c')
-rw-r--r-- | runtime/stack-x86_64.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/runtime/stack-x86_64.c b/runtime/stack-x86_64.c index 9afdf38a..914242e0 100644 --- a/runtime/stack-x86_64.c +++ b/runtime/stack-x86_64.c @@ -41,14 +41,15 @@ static void __stp_stack_print(struct pt_regs *regs, int verbose, int levels, if (ret == 0) { _stp_func_print(UNW_PC(&info), verbose, 1, tsk); levels--; - continue; + if (UNW_PC(&info) != _stp_kretprobe_trampoline) + continue; } /* If an error happened or we hit a kretprobe trampoline, * use fallback backtrace, unless user task backtrace. * FIXME: is there a way to unwind across kretprobe - * trampolines? */ + * trampolines? PR9999. */ if ((ret < 0 - || (ret > 0 && UNW_PC(&info) == _stp_kretprobe_trampoline)) + || UNW_PC(&info) == _stp_kretprobe_trampoline) && ! (tsk || arch_unw_user_mode(&info))) _stp_stack_print_fallback(UNW_SP(&info), verbose, levels); return; |