On 08-Dec-2002 Dag-Erling Smorgrav wrote:
> This is 100% reproducible with a top-of-tree kernel, but didn't happen
> with Wednesday's sources:
> 
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0xc01e8d
> fault code              = supervisor write, page not present
> instruction pointer     = 0x8:0xc045dc80
> stack pointer           = 0x10:0xd536dce4
> frame pointer           = 0x10:0xd536dd00
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 12 (swi6: tty:sio clock)
> kernel: type 12 trap, code=0
> Stopped at      0xc045dc80:     movb    %al,0xc01e8d
> db> trace
> _end(0) at 0xc045dc80
> ithread_loop(c152ab00,d536dd48,c1537b60,c01d3d80,0) at ithread_loop+0x11c
> fork_exit(c01d3d80,c152ab00,d536dd48) at fork_exit+0x8f
> fork_trampoline() at fork_trampoline+0x1a
> --- trap 0x1, eip = 0, esp = 0xd536dd7c, ebp = 0 ---
> 
> and according to gdb:
> 
> (gdb) list _end
> No line number known for _end.
> (gdb) list *0xc045dc80
> No source file for address 0xc045dc80.

This is where it faulted for some reason or another.  It was running
a registered interrupt handler. Do you have any kernel modules in this
system?

> (gdb) l *(ithread_loop + 0x11c)
> 0xc01d3e9c is in ithread_loop (../../../kern/kern_intr.c:536).
> 531                                             goto restart;
> 532                                     }
> 533                                     if ((ih->ih_flags & IH_MPSAFE) == 0)
> 534                                             mtx_lock(&Giant);
> 535                                     ih->ih_handler(ih->ih_argument);
> 536                                     if ((ih->ih_flags & IH_MPSAFE) == 0)
> 537                                             mtx_unlock(&Giant);
> 538                             }
> 539                     }
> 540
> (gdb) l *(fork_exit+0x8f)
> 0xc01d326f is in fork_exit (../../../kern/kern_fork.c:872).
> 867
> 868             /*
> 869              * Check if a kernel thread misbehaved and returned from its main
> 870              * function.
> 871              */
> 872             PROC_LOCK(p);
> 873             if (p->p_flag & P_KTHREAD) {
> 874                     PROC_UNLOCK(p);
> 875                     mtx_lock(&Giant);
> 876                     printf("Kernel thread \"%s\" (pid %d) exited prematurely.\n",
> (gdb) l *(fork_trampoline+0x1a)
> 0xc02db94e is at {standard input}:152.
> 147     {standard input}: No such file or directory.
>         in {standard input}
> 
> DES
> -- 
> Dag-Erling Smorgrav - [EMAIL PROTECTED]
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message

-- 

John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

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

Reply via email to