On Wed, 15 May 2002, John Baldwin wrote:

> On 15-May-2002 Dag-Erling Smorgrav wrote:
> > John Baldwin <[EMAIL PROTECTED]> writes:
> >> The kernel overflowed it's stack.  In SRM, you can try to debug this
> >> by using 'e sp' to get the stack pointer then get a stack dump and save
> >> a copy of it in a log or something, reboot the machine, then use gdb's
> >> list command on the kernel.debug to figure out the source:line for all
> >> the kernel-text addresses in the stack dump to figure out the backtrace.
> >
> > How do I get a stack trace? I can't get the 'examine' command to
> > actually print anything...
>
> It depends on which machine actually. :-/  First do 'e sp' to get the
> stack pointer.  Then you want to do something like this:
>
> e -n 100 <value of sp without any leading 0x>

At least for i386's, it can be useful to set $esp and $eip to
non-preposterous values if they are hosed (record the old values first).
Bugs in the pagefault handler make the behaviour for invalid pointers
very bad.  The main one trap_pfault() doesn't give up immediately if
the pagefault is from within ddb.  In old versions of FreeBSD, this is
probably only fatal if trap_pfault() blocks, but in -current is is fatal
in the usual case where trap_fault() acquires a sleep lock.

Bruce


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to