Re: [patch] crash on a KVM-generated dump

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

Attachment: signature.asc
Description: Digital signature

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux