Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Oct 1996 15:41:32 +0200 (EET)
From:      Heikki Suonsivu <hsu@clinet.fi>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/1914: vm_page_alloc(ZERO): missing page on free queue
Message-ID:  <199610281341.PAA05955@katiska.clinet.fi>
Resent-Message-ID: <199610281350.FAA26137@freefall.freebsd.org>

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

>Number:         1914
>Category:       kern
>Synopsis:       vm_page_alloc(ZERO): missing page on free queue
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 28 05:50:02 PST 1996
>Last-Modified:
>Originator:     Heikki Suonsivu
>Organization:
Clinet, Espoo, Finland
>Release:        FreeBSD 2.2-CURRENT i386
>Environment:

WWW server (relatively high use, couple of hits per second, ~100 virtual
servers).  -current from 1 October (or sligtly before).  This one also runs
a proxy (squid) and has two nfs exported disks.

>Description:

hsu#varasto.clinet.fi Mon 3: gdb -k kernel.5 vmcore.5
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...
IdlePTD 26c000
current pcb at 20e470
panic: vm_page_alloc(ZERO): missing page on free queue

#0  boot (howto=256) at ../../kern/kern_shutdown.c:237
237                                     dumppcb.pcb_cr3 = rcr3();
(kgdb) bt
#0  boot (howto=256) at ../../kern/kern_shutdown.c:237
#1  0xf01127b2 in panic (
    fmt=0xf01c1faa "vm_page_alloc(ZERO): missing page on free queue\n")
    at ../../kern/kern_shutdown.c:361
#2  0xf01c21e1 in vm_page_alloc (object=0xf4502c80, pindex=958, page_req=3)
    at ../../vm/vm_page.c:785
#3  0xf01cb126 in pmap_page_alloc (object=0xf4502c80, pindex=958)
    at ../../i386/i386/pmap.c:676
#4  0xf01cb5da in _pmap_allocpte (pmap=0xf4148764, ptepindex=958)
    at ../../i386/i386/pmap.c:931
#5  0xf01cb71b in pmap_allocpte (pmap=0xf4148764, va=4022325248)
    at ../../i386/i386/pmap.c:1044
#6  0xf01ccb56 in pmap_copy (dst_pmap=0xf4148764, src_pmap=0xf4264964, 
    dst_addr=4022198272, len=131072, src_addr=4022198272)
    at ../../i386/i386/pmap.c:2228
#7  0xf01be7f2 in vm_map_copy_entry (src_map=0xf4264900, dst_map=0xf4148700, 
    src_entry=0xfa3b0c60, dst_entry=0xfa423c3c) at ../../vm/vm_map.c:1955
#8  0xf01be967 in vmspace_fork (vm1=0xf4264900) at ../../vm/vm_map.c:2046
#9  0xf01bb8ac in vm_fork (p1=0xf45a0c00, p2=0xf45b9800)
    at ../../vm/vm_glue.c:203
#10 0xf010c8ef in fork1 (p1=0xf45a0c00, flags=20, retval=0xefbfff84)
    at ../../kern/kern_fork.c:340
#11 0xf010c410 in fork (p=0xf45a0c00, uap=0xefbfff94, retval=0xefbfff84)
---Type <return> to continue, or q <return> to quit---
    at ../../kern/kern_fork.c:91
#12 0xf01cef67 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 389120, 
      tf_esi = 362884, tf_ebp = -272638856, tf_isp = -272629788, tf_ebx = 0, 
      tf_edx = 389120, tf_ecx = 362884, tf_eax = 2, tf_trapno = 12, 
      tf_err = 7, tf_eip = 180613, tf_cs = 31, tf_eflags = 514, 
      tf_esp = -272638884, tf_ss = 39}) at ../../i386/i386/trap.c:891
#13 0xf01c6f85 in Xsyscall ()
#14 0x6a82 in ?? ()
#15 0x5ee9 in ?? ()
#16 0x5c1d in ?? ()
#17 0xd03a in ?? ()
#18 0x107f in ?? ()
(kgdb) up
#1  0xf01127b2 in panic (
    fmt=0xf01c1faa "vm_page_alloc(ZERO): missing page on free queue\n")
    at ../../kern/kern_shutdown.c:361
361             boot(bootopt);
(kgdb) list
356
357     #if defined(DDB)
358             if (debugger_on_panic)
359                     Debugger ("panic");
360     #endif
361             boot(bootopt);
362     }
363
364     /*
365      * Two routines to handle adding/deleting items on the
(kgdb) up
#2  0xf01c21e1 in vm_page_alloc (object=0xf4502c80, pindex=958, page_req=3)
    at ../../vm/vm_page.c:785
785                                     splx(s);
(kgdb) list
780                                     panic("vm_page_alloc(ZERO): missing page on free queue\n");
781     #endif
782                     } else {
783                             m = vm_page_select(object, pindex, PQ_CACHE);
784                             if (m == NULL) {
785                                     splx(s);
786     #if defined(DIAGNOSTIC)
787                                     if (cnt.v_cache_count > 0)
788                                             printf("vm_page_alloc(ZERO): missing pages on cache queue: %d\n", cnt.v_cache_count);
789     #endif
(kgdb) print cnt.v_cache_count
$1 = 3445
(kgdb) print *m
$2 = {pageq = {tqe_next = 0x7205c766, tqe_prev = 0x34000004}, hashq = {
    tqe_next = 0xe5895512, tqe_prev = 0x8c9d026a}, listq = {
    tqe_next = 0x8ee08ed8, tqe_prev = 0xc2e8e8}, object = 0xbc0000, 
  pindex = 3892322304, phys_addr = 331, queue = 4281, flags = 9773, 
  pc = 48896, wire_count = 54780, hold_count = 32, act_count = 41 ')', 
  busy = 249 'ù', valid = 49 '1', dirty = 192 'À'}
(kgdb) print object
$3 = (struct vm_object *) 0xf4502c80
(kgdb) print *object
$4 = {object_list = {tqe_next = 0x0, tqe_prev = 0xf452e780}, cached_list = {
    tqe_next = 0xdeadc0de, tqe_prev = 0xdeadc0de}, shadow_head = {
    tqh_first = 0x0, tqh_last = 0xf4502c90}, shadow_list = {
    tqe_next = 0xdeadc0de, tqe_prev = 0xdeadc0de}, memq = {
    tqh_first = 0xf02c4a08, tqh_last = 0xf02d2d98}, type = OBJT_DEFAULT, 
  size = 960, ref_count = 1, shadow_count = 0, pg_color = 13, flags = 0, 
  paging_in_progress = 0, behavior = 0, resident_page_count = 3, 
  paging_offset = 0x0000000000000000, backing_object = 0x0, 
  backing_object_offset = 0x0000000000000000, last_read = 0, 
  page_hint = 0xf02d2d88, pager_object_list = {tqe_next = 0x0, 
    tqe_prev = 0xf4524be4}, handle = 0x0, un_pager = {vnp = {
      vnp_size = 0x0000000000000001}, devp = {devp_pglist = {tqh_first = 0x1, 
        tqh_last = 0x0}}, swp = {swp_nblocks = 1, swp_allocsize = 0, 
      swp_blocks = 0x0, swp_poip = 0}}}
(kgdb) print pindex
$5 = 958
(kgdb)

kernel and dump are

ftp://ftp.clinet.fi/pub/FreeBSD/crashdumps/varasto/*.5.gz

(within 15 minutes of mailing this PR)

>How-To-Repeat:

I do not know, but perhaps described system might be a good candidate.

>Fix:
	

-- 
Heikki Suonsivu, T{ysikuu 10 C 83/02210 Espoo/FINLAND, hsu@clinet.fi
mobile +358-40-5519679 work +358-0-43542270 fax -4555276
>Audit-Trail:
>Unformatted:



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