Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 03 Nov 1996 21:17:06 +0100
From:      "Philippe Charnier" <charnier@xp11.frmug.org>
To:        current@FreeBSD.org
Subject:   panic: page fault
Message-ID:  <199611032017.VAA01052@xp11.frmug.org>

next in thread | raw e-mail | index | archive | help
Hello,

I got this with a current kernel (last friday, cvs-cur #2646).

Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x1000024
fault code		= supervisor read, page not present
instruction pointer	= 0x8:0xf01ba1a3
stack pointer	        = 0x10:0xf01daff4
frame pointer	        = 0x10:0xf01daff8
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= resume, IOPL = 0
current process		= Idle
interrupt mask		= 
panic: page fault

xp11# gdb -k
GDB is free software and you are welcome to 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.
GDB 4.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc.
(kgdb) symbol-file /usr/trash/kernels.debug/kernel.2646
Reading symbols from /usr/trash/kernels.debug/kernel.2646...done.
(kgdb) exec-file /usr/trash/crash/kernel.8
(kgdb) core-file /usr/trash/crash/vmcore.8
IdlePTD 22b000
current pcb at 0x1e66e0
panic: page fault
#0  boot (howto=256) at ../../kern/kern_shutdown.c:243
243                                     dumppcb.pcb_cr3 = rcr3();
(kgdb) bt
#0  boot (howto=256) at ../../kern/kern_shutdown.c:243
#1  0xf0114f23 in panic (fmt=0xf01b8cef "page fault")
    at ../../kern/kern_shutdown.c:367
#2  0xf01b9883 in trap_fatal (frame=0xf01dafb8) at ../../i386/i386/trap.c:741
#3  0xf01b9364 in trap_pfault (frame=0xf01dafb8, usermode=0)
    at ../../i386/i386/trap.c:652
#4  0xf01b8ff7 in trap (frame={tf_es = 16, tf_ds = -266665968, tf_edi = 0, 
      tf_esi = -255372288, tf_ebp = -266489864, tf_isp = -266489888, 
      tf_ebx = 16777216, tf_edx = 1, tf_ecx = 0, tf_eax = 16777216, 
      tf_trapno = 12, tf_err = -266534912, tf_eip = -266624605, tf_cs = 8, 
      tf_eflags = 65542, tf_esp = -266445016, tf_ss = 0})
    at ../../i386/i386/trap.c:311
#5  0xf01ba1a3 in vm_page_zero_idle () at ../../i386/i386/vm_machdep.c:842
(kgdb) up 4
#4  0xf01b8ff7 in trap (frame={tf_es = 16, tf_ds = -266665968, tf_edi = 0, 
      tf_esi = -255372288, tf_ebp = -266489864, tf_isp = -266489888, 
      tf_ebx = 16777216, tf_edx = 1, tf_ecx = 0, tf_eax = 16777216, 
      tf_trapno = 12, tf_err = -266534912, tf_eip = -266624605, tf_cs = 8, 
      tf_eflags = 65542, tf_esp = -266445016, tf_ss = 0})
    at ../../i386/i386/trap.c:311
311                             (void) trap_pfault(&frame, FALSE);
(kgdb) up 1
#5  0xf01ba1a3 in vm_page_zero_idle () at ../../i386/i386/vm_machdep.c:842
842             if ((cnt.v_free_count > cnt.v_interrupt_free_min) &&
(kgdb) list
837      */
838     int
839     vm_page_zero_idle() {
840             vm_page_t m;
841             static int free_rover = 0;
842             if ((cnt.v_free_count > cnt.v_interrupt_free_min) &&
843                     (m = vm_page_list_find(PQ_FREE, free_rover))) {
844                     --(*vm_page_queues[m->queue].lcnt);
845                     TAILQ_REMOVE(vm_page_queues[m->queue].pl, m, pageq);
846                     enable_intr();
(kgdb) print cnt
$1 = {v_swtch = 286553, v_trap = 591536, v_syscall = 11028453, 
  v_intr = 7327267, v_soft = 161029, v_vm_faults = 510152, 
  v_cow_faults = 271432, v_zfod = 132442, v_swapin = 977, v_swapout = 1983, 
  v_swappgsin = 2452, v_swappgsout = 3758, v_vnodein = 2082, v_vnodeout = 0, 
  v_vnodepgsin = 7637, v_vnodepgsout = 0, v_intrans = 13, 
  v_reactivated = 7419, v_pdwakeups = 201, v_pdpages = 454533, v_dfree = 127, 
  v_pfree = 319938, v_tfree = 504874, v_page_size = 4096, v_page_count = 3633, 
  v_free_reserved = 94, v_free_target = 427, v_free_min = 111, 
  v_free_count = 250, v_wire_count = 996, v_active_count = 1680, 
  v_inactive_target = 653, v_inactive_count = 325, v_cache_count = 381, 
  v_cache_min = 305, v_cache_max = 1222, v_pageout_free_min = 10, 
  v_interrupt_free_min = 2}
(kgdb) print m
$2 = (struct vm_page *) 0x1000000
(kgdb) print *m
Cannot access memory at address 0x1000000.
(kgdb) 

Note that I have default setting (don't know which one) for PQ_L2_SIZE
which is used in vm_page_list_find() (line 592, /usr/src/sys/vm/vm_page.c).

------                                                            ------ 
Philippe Charnier                               charnier@lirmm.fr (smtp)       
                                          charnier@xp11.frmug.org (uucp) 

    ``a PC not running FreeBSD is like a venusian with no tentacles'' 
------------------------------------------------------------------------



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