Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Oct 1996 18:47:50 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        freebsd-hackers@FreeBSD.org, j@uriah.heep.sax.de
Cc:        hasty@rah.star-gate.com
Subject:   Re: Another question: kernel crash dumps 8)
Message-ID:  <199610070847.SAA23202@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>As Amancio Hasty wrote:
>
>>  #17 0xf01d36f7 in trap (frame={tf_es = 196624, tf_ds = 262160, 
>>       tf_edi = -1073741824, tf_esi = 24499, tf_ebp = -266207472, 
>>       tf_isp = -266207556, tf_ebx = 3, tf_edx = 6553500, tf_ecx = 4, 
>>       tf_eax = -219578368, tf_trapno = 12, tf_err = 0, tf_eip = -266385786, 
>>       tf_cs = 8, tf_eflags = 66070, tf_esp = 3, tf_ss = 21})
>>     at ../../i386/i386/trap.c:311
>>  #18 0xf01cb6c1 in calltrap ()
>
>> So it seems that the current running routine's context is not being saved.

Trap, interrupt and syscall handlers handlers don't have a normal frame.
This results in the context of the routine that was running when the
trap occurred being invisible in gdb.  The problem is most critical for
traps in kernel mode.  For traps in user mode and syscalls, you usually
don't care what was running when the trap occurred.

>Get the latest gdb with Garett's modifications, or read the section
>about kernel debugging in the handbook.  I've described the procedure
>how to do this at least a dozen times -- do you read these lists?
>
>(Hint: ``frame frame->tf_ebp frame->tf_eip'')

Or recover my work-around from rev.1.10 of i386/exception.s.  It is
only for traps.  Syscalls are interrupts are too hard/expensive to fix
in the same way.  The debugger needs to understand the frame.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610070847.SAA23202>