This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
RE: double fault
- From: "Stone, Joshua I" <joshua dot i dot stone at intel dot com>
- To: "Roland McGrath" <roland at redhat dot com>
- Cc: <systemtap at sources dot redhat dot com>
- Date: Mon, 21 Nov 2005 19:46:03 -0800
- Subject: RE: double fault
>From: Roland McGrath [mailto:roland@redhat.com]
>
>The stack overflow notion sounds plausible. To investigate
>that angle, one
>thing to try comes to mind off hand. In each probe that might
>be hitting,
>stick some %{ ... %} code to do a "stack getting small" check.
> It can do
>something like:
>
> unsigned left = (unsigned)regs & 0xfff;
> if (left < 256) panic("stack getting close");
>
>That might manage to print out a full oops with backtrace
>details that show
>the cascade of page fault frames or whatever the situation actually is.
>
>
>Thanks,
>Roland
>
I tried the code you gave (using CONTEXT->regs), but I don't understand
how that computes how much stack space is left. Shouldn't it be
CONTEXT->regs->esp? And even then, you can see the two esp's from the
register dumps I gave - the first would have triggered your panic, and
the second wouldn't. Am I missing something?
Anyway, I tried it both ways. It immediately panics, but there's no
oops info. It just says "Kernel panic - not syncing". I added a
dump_stack call, but that all looks innocent.
Is there a way I can get the double-fault to print a full oops, with a
stack trace?
I'm pretty new to kernel-debugging, so sorry if I'm asking simple
questions...
Thanks,
Josh