Re: page fault in pmap_remove_all

From: Alan Cox <alan.l.cox_at_gmail.com>
Date: Wed, 11 Aug 2010 12:25:17 -0500
On Tue, Aug 10, 2010 at 9:43 AM, Oliver Fromme <olli_at_lurza.secnetix.de>wrote:

> Hi,
>
> This is i386 -current as of 2010-08-04.
> It was building the toolchain for amd64 when it happened.
> I'll keep the vmcore around, so I can dig more into it
> if someone tells me what to do.
>
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
> are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i386-marcel-freebsd"...
>
> Unread portion of the kernel message buffer:
>
>
> Fatal trap 12: page fault while in kernel mode
> fault virtual address   = 0x0
> fault code              = supervisor write, page not present
> instruction pointer     = 0x20:0xc083bc86
> stack pointer           = 0x28:0xe50a1a94
> frame pointer           = 0x28:0xe50a1ac4
> 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         = 5785 (install)
> trap number             = 12
> panic: page fault
> Uptime: 6h13m9s
> Physical memory: 951 MB
> Dumping 182 MB: 167 151 135 119 103 87 71 55 39 23 7
>
> #0  doadump () at pcpu.h:231
> 231             __asm("movl %%fs:0,%0" : "=r" (td));
> (kgdb) list *0xc083bc86
> 0xc083bc86 is in pmap_remove_all (atomic.h:318).
> 313     atomic_readandclear_int(volatile u_int *addr)
> 314     {
> 315             u_int res;
> 316
> 317             res = 0;
> 318             __asm __volatile(
> 319             "       xchgl   %1,%0 ;         "
> 320             "# atomic_readandclear_int"
> 321             : "+r" (res),                   /* 0 */
> 322               "=m" (*addr)                  /* 1 */
> (kgdb) backtrace
> #0  doadump () at pcpu.h:231
> #1  0xc05daef0 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:416
> #2  0xc05db11d in panic (fmt=Variable "fmt" is not available.
> ) at /usr/src/sys/kern/kern_shutdown.c:590
> #3  0xc0840583 in trap_fatal (frame=0xe50a1a54, eva=0)
>    at /usr/src/sys/i386/i386/trap.c:945
> #4  0xc08407d0 in trap_pfault (frame=0xe50a1a54, usermode=0, eva=0)
>    at /usr/src/sys/i386/i386/trap.c:858
> #5  0xc0840cf3 in trap (frame=0xe50a1a54) at
> /usr/src/sys/i386/i386/trap.c:533
> #6  0xc082ce2c in calltrap () at /usr/src/sys/i386/i386/exception.s:166
> #7  0xc083bc86 in pmap_remove_all (m=0xc150e9e8) at atomic.h:318
> #8  0xc07e9544 in vm_fault (map=0xc38463c0, vaddr=684290048,
>    fault_type=1 '\001', fault_flags=Variable "fault_flags" is not
> available.
> ) at /usr/src/sys/vm/vm_fault.c:499
> #9  0xc08406c0 in trap_pfault (frame=0xe50a1d28, usermode=1, eva=684290048)
>    at /usr/src/sys/i386/i386/trap.c:837
> #10 0xc0840b5e in trap (frame=0xe50a1d28) at
> /usr/src/sys/i386/i386/trap.c:399
> #11 0xc082ce2c in calltrap () at /usr/src/sys/i386/i386/exception.s:166
> #12 0x0804858c in ?? ()
> Previous frame inner to this frame (corrupt stack?)
> (kgdb)
>
>
If at all possible, I would like to know the value of "pv->pv_va" in
pmap_remove_all().

Regards,
Alan
Received on Wed Aug 11 2010 - 15:49:33 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:06 UTC