2006-10-06 21:54:16

by Dave Jones

[permalink] [raw]
Subject: Compress stack unwinder output

The unwinder has some extra newlines, which eat up loads of screen
space when it spews. (See https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=137900
for a nasty example).

warning_symbol-> and warning-> already printk a newline, so don't add one
in the strings passed to them.

Signed-off-by: Dave Jones <[email protected]>

--- linux-2.6.18.noarch/arch/x86_64/kernel/traps.c~ 2006-10-06 17:42:47.000000000 -0400
+++ linux-2.6.18.noarch/arch/x86_64/kernel/traps.c 2006-10-06 17:47:23.000000000 -0400
@@ -289,21 +289,21 @@ void dump_trace(struct task_struct *tsk,
}
if (unw_ret > 0) {
if (call_trace == 1 && !arch_unw_user_mode(&info)) {
- ops->warning_symbol(data, "DWARF2 unwinder stuck at %s\n",
+ ops->warning_symbol(data, "DWARF2 unwinder stuck at %s",
UNW_PC(&info));
if ((long)UNW_SP(&info) < 0) {
- ops->warning(data, "Leftover inexact backtrace:\n");
+ ops->warning(data, "Leftover inexact backtrace:");
stack = (unsigned long *)UNW_SP(&info);
if (!stack)
return;
} else
- ops->warning(data, "Full inexact backtrace again:\n");
+ ops->warning(data, "Full inexact backtrace again:");
} else if (call_trace >= 1)
return;
else
- ops->warning(data, "Full inexact backtrace again:\n");
+ ops->warning(data, "Full inexact backtrace again:");
} else
- ops->warning(data, "Inexact backtrace:\n");
+ ops->warning(data, "Inexact backtrace:");
}
if (!stack) {
unsigned long dummy;
--- linux-2.6.18.noarch/arch/i386/kernel/traps.c~ 2006-10-06 17:47:28.000000000 -0400
+++ linux-2.6.18.noarch/arch/i386/kernel/traps.c 2006-10-06 17:47:45.000000000 -0400
@@ -194,22 +194,22 @@ void dump_trace(struct task_struct *task
}
if (unw_ret > 0) {
if (call_trace == 1 && !arch_unw_user_mode(&info)) {
- ops->warning_symbol(data, "DWARF2 unwinder stuck at %s\n",
+ ops->warning_symbol(data, "DWARF2 unwinder stuck at %s",
UNW_PC(&info));
if (UNW_SP(&info) >= PAGE_OFFSET) {
- ops->warning(data, "Leftover inexact backtrace:\n");
+ ops->warning(data, "Leftover inexact backtrace:");
stack = (void *)UNW_SP(&info);
if (!stack)
return;
ebp = UNW_FP(&info);
} else
- ops->warning(data, "Full inexact backtrace again:\n");
+ ops->warning(data, "Full inexact backtrace again:");
} else if (call_trace >= 1)
return;
else
- ops->warning(data, "Full inexact backtrace again:\n");
+ ops->warning(data, "Full inexact backtrace again:");
} else
- ops->warning(data, "Inexact backtrace:\n");
+ ops->warning(data, "Inexact backtrace:");
}
if (!stack) {
unsigned long dummy;
--
http://www.codemonkey.org.uk


2006-10-16 10:15:20

by Andi Kleen

[permalink] [raw]
Subject: Re: Compress stack unwinder output

On Friday 06 October 2006 23:54, Dave Jones wrote:
> The unwinder has some extra newlines, which eat up loads of screen
> space when it spews. (See https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=137900
> for a nasty example).
>
> warning_symbol-> and warning-> already printk a newline, so don't add one
> in the strings passed to them.

Added in different form (i had already changed that code)

Thanks

-Andi