[Crash-utility] [patch] crash on a KVM-generated dump
Sami Liedes
sliedes at cc.hut.fi
Fri Oct 8 14:07:31 UTC 2010
On Fri, Oct 08, 2010 at 09:31:02AM -0400, Dave Anderson wrote:
> I don't think that this is associated with KVM, but rather the kernel
> version used. It should be pretty easy to debug on your end, because it
> boils down to these initializations at the top of x86_64_per_cpu_init()
>
> irq_sp = per_cpu_symbol_search("per_cpu__irq_stack_union");
> cpu_sp = per_cpu_symbol_search("per_cpu__cpu_number");
>
> If it's a UP kernel, and if "irq_sp" does not get set, then isize would
> be left uninitialized.
It's a uniprocessor amd64 kernel. Neither irq_sp nor cpu_sp get set.
I have
crash> sym irq_stack_union
ffffffff81a1c000 (D) irq_stack_union
crash> sym cpu_number
symbol not found: cpu_number
It's not accepted by per_cpu_symbol_search() because its type is not
'V' and because it's not between __per_cpu_start and __per_cpu_end.
__per_cpu_start and __per_cpu_end are the same; I don't know if
there's something wrong with that.
(gdb) b x86_64_per_cpu_init
Breakpoint 1 at 0x4eb49c: file x86_64.c, line 823.
(gdb) r
[...]
Breakpoint 1, x86_64_per_cpu_init () at x86_64.c:823
823 ms = machdep->machspec;
(gdb) n
825 irq_sp = per_cpu_symbol_search("per_cpu__irq_stack_union");
(gdb) s
per_cpu_symbol_search (symbol=0x8a46d7 "per_cpu__irq_stack_union") at symbols.c:4106
4106 if (STRNEQ(symbol, "per_cpu__")) {
(gdb) n
4107 if ((sp = symbol_search(symbol)))
(gdb)
4109 new = symbol + strlen("per_cpu__");
(gdb)
4110 if ((sp = symbol_search(new))) {
(gdb) print new
$1 = 0x8a46e0 "irq_stack_union"
(gdb) n
4111 if ((sp->type == 'V') ||
(gdb) l
4106 if (STRNEQ(symbol, "per_cpu__")) {
4107 if ((sp = symbol_search(symbol)))
4108 return sp;
4109 new = symbol + strlen("per_cpu__");
4110 if ((sp = symbol_search(new))) {
4111 if ((sp->type == 'V') ||
4112 ((sp->value >= st->__per_cpu_start) &&
4113 (sp->value < st->__per_cpu_end)))
4114 return sp;
4115 }
(gdb) print sp->type
$2 = 68 'D'
(gdb) print sp->value
$3 = 18446744071589445632
(gdb) p/x sp->value
$4 = 0xffffffff81a1c000
(gdb) p/x st->__per_cpu_start
$5 = 0xffffffff81ae7000
(gdb) p/x st->__per_cpu_end
$6 = 0xffffffff81ae7000
Sami
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20101008/c9747594/attachment.sig>
More information about the Crash-utility
mailing list