The line where I was having the trap is still within cpu_switch (line
236 of swtch.s).

I added  WITNESS and INVARIANTS to my kernel and I get a new panic. 
This time I see:

kernel trap 12 with interrupts disabled
panic: mutex sched lock recursed at ../../kern/kern_synch.c:918

panic()
_mtx_assert(c031b6c0,9,c0290990,396,c043b100) at _mtx_assert+0x63
mi_switch(c031b6c0,0,c,c24bef08,c02681cd) at mi_switch+0x25
sched_ithd(e) at sched_ithd+0xd9
Xresume14() at Xresume14+0x8
--- interrupt, eip = 0xc02b0008, esp - 0xc2fbeee4, epb = 0xc2feed4 ---
__set_sysinit_set_sym_sc_mem_sys_init(c0275020,c02b0008,286,c031b7230,0)
at __set_sysinit_set_sym_sc_mem_sys_init+0x644

Jim Bloom
[EMAIL PROTECTED]

PS: Here is the original message.  It was cut and pasted from the logs
since your message is sitting in another OS on a dual boot machine.

On 06-Feb-01 Jim Bloom wrote:
> I have seen both a trap 12 and a trap 9 from a Friday Feb. 2 kernel.  This is
> occuring on my laptop (AST Ascentia 810N) which I can't seem to get to create
> a
> core dump.  Here is a hand transcription of what I see.
> 
> Mounting root from ufs:/dev/ad0s1a
> pccard: card inserted, slot 0
> pccard: card inserted, slot 1
> kernel trap 9 with interrupts disabled
> 
> Fatal trap 9: general protection fault while in kernel mode
> instruction pointer   = 0x8:0xc0270ad8
> stack pointer         = 0x10:0xc2fb4f50
> frame pointer         = 0x10:0xc2fb4f64
> code segment          = base 0x0, limit 0xfffff, type 0x1b
>                       = DPL 0, pres 1, def32 1, gran 1
> processor eflags      = resume, IOPL = 0
> current process       = 16 (irq14:ata0)
> kernel: type 9 trap, code=0
> Stopped at      sw1b+0x77:  ltr   %si
> 
> backtrace
> sw1b(4000) at sw1b+0x77               (note this is actually swtch())

Actually, this is beyond the end of cpu_switch I think.  You are
effectively
off in lala land.

> ithd_loop(0,c2fb4fa8) at ithd_loop+0xf7

This is either in the mtx_enter of Giant or in the interrupt handler
itself. 
I'm betting an interrupt handler isn't being setup properly one way or
another,
and that the code is jumping through a bogus pointer and ending up in
lala land
executing random code.

> fork_exit(c0275bd0,0,c2fb4fa8_ at fork_exit+0x2d
> fork_trampoline() at fork_trampoline+0x8
> 
> I don't have WITNESS or INVARIANTS at this time and don;t have a serial
> console
> so I can't capture the output.

These help to capture bugs by doing extra checks though, and especially
with
current they are highly, highly, highly recommended right now.


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

Reply via email to