[PATCH] i386: Do backtrace fallback too
Similar patch to earlier x86-64 patch. When the dwarf2 unwinder fails dump the left over stack with the old unwinder. Also some clarifications in the headers. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
b783fd925c
commit
c97d20a6c5
1 changed files with 14 additions and 3 deletions
|
@ -187,10 +187,21 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
|
||||||
if (unwind_init_blocked(&info, task) == 0)
|
if (unwind_init_blocked(&info, task) == 0)
|
||||||
unw_ret = show_trace_unwind(&info, log_lvl);
|
unw_ret = show_trace_unwind(&info, log_lvl);
|
||||||
}
|
}
|
||||||
if (unw_ret > 0) {
|
if (unw_ret > 0 && !arch_unw_user_mode(&info)) {
|
||||||
if (call_trace > 0)
|
#ifdef CONFIG_STACK_UNWIND
|
||||||
|
print_symbol("DWARF2 unwinder stuck at %s\n",
|
||||||
|
UNW_PC(info.regs));
|
||||||
|
if (call_trace == 1) {
|
||||||
|
printk("Leftover inexact backtrace:\n");
|
||||||
|
if (UNW_SP(info.regs))
|
||||||
|
stack = (void *)UNW_SP(info.regs);
|
||||||
|
} else if (call_trace > 1)
|
||||||
return;
|
return;
|
||||||
printk("%sLegacy call trace:\n", log_lvl);
|
else
|
||||||
|
printk("Full inexact backtrace again:\n");
|
||||||
|
#else
|
||||||
|
printk("Inexact backtrace:\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue