Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jul 2004 16:13:06 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        current@FreeBSD.org
Subject:   Re: page fault/panic: mi_switch: switch in a critical section
Message-ID:  <200407121613.06408.jhb@FreeBSD.org>
In-Reply-To: <20040712024044.GA24706@xor.obsecurity.org>
References:  <20040712024044.GA24706@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 11 July 2004 10:40 pm, Kris Kennaway wrote:
> panic: page fault
> panic messages:
> ---
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0x104
> fault code              = supervisor read, page not present
> instruction pointer     = 0x8:0xc058a8cf
> stack pointer           = 0x10:0xdcb34cc4
> frame pointer           = 0x10:0xdcb34cec
> code segment            = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = resume, IOPL = 0
> current process         = 50 (schedcpu)
> trap number             = 12
> panic: page fault
>
> syncing disks, buffers remaining... panic: mi_switch: switch in a critical
> section
>
> addr2line says the panic was in kern/sched_4bsd.c:327
>
>                                 /*
>                                  * The kse slptimes are not touched in
> wakeup * because the thread may not HAVE a KSE. */
>                                 if (ke->ke_state == KES_ONRUNQ) {
>                                         awake = 1;
>                                         ke->ke_flags &= ~KEF_DIDRUN;
> --->                            } else if ((ke->ke_state == KES_THREAD) &&
>                                     (TD_IS_RUNNING(ke->ke_thread))) {
>                                         awake = 1;
>
> gdb -k got confused and couldn't make anything out of the backtrace.

The code doesn't match the comment for one.  Note that the code says the kse 
may be NULL, but it deref's ke anyways.  Probably ke->ke_thread is NULL.  
Julian might know when that case can happen.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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