Date: Tue, 21 May 1996 13:45:00 +0300 (EET DST) From: Heikki Suonsivu <hsu@clinet.fi> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/1227: vm_page_activate: already active (new vm system) Message-ID: <199605211045.NAA00441@katiska.clinet.fi> Resent-Message-ID: <199605211050.DAA16356@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 1227 >Category: kern >Synopsis: vm_page_activate: already active (new vm system) >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue May 21 03:50:00 PDT 1996 >Last-Modified: >Originator: Heikki Suonsivu >Organization: Clinet, Espoo, Finland >Release: FreeBSD 2.2-CURRENT i386 >Environment: News server, P90, ASUS, 2940, 64M. May 19 sup ended around 18:25 GMT. >Description: Dump and kernel are ftp://ftp.clinet.fi/pub/FreeBSD/crashdumps/*.73.gz 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 268000 current pcb at 21f5f8 panic: vm_page_activate: already active #0 boot (howto=256) at ../../i386/i386/machdep.c:940 940 dumppcb.pcb_ptd = rcr3(); (kgdb) bt #0 boot (howto=256) at ../../i386/i386/machdep.c:940 #1 0xf01171f6 in panic (fmt=0xf01bd178 "vm_page_activate: already active") at ../../kern/subr_prf.c:127 #2 0xf01bd1d0 in vm_page_activate (m=0xf0309c70) at ../../vm/vm_page.c:703 #3 0xf01be8e4 in vm_pageout_scan () at ../../vm/vm_pageout.c:586 #4 0xf01beeda in vm_pageout () at ../../vm/vm_pageout.c:862 #5 0xf0108386 in kproc_start (udata=0xf0203cd0) at ../../kern/init_main.c:255 #6 0xf0108324 in main (framep=0xefbfffb8) at ../../kern/init_main.c:205 (kgdb) list 935 cngetc(); 936 } else { 937 if (howto & RB_DUMP) { 938 if (!cold) { 939 savectx(&dumppcb); 940 dumppcb.pcb_ptd = rcr3(); 941 dumpsys(); 942 } 943 944 if (PANIC_REBOOT_WAIT_TIME != 0) { (kgdb) up #1 0xf01171f6 in panic (fmt=0xf01bd178 "vm_page_activate: already active") at ../../kern/subr_prf.c:127 127 boot(bootopt); (kgdb) list 122 123 #if defined(DDB) 124 if (debugger_on_panic) 125 Debugger ("panic"); 126 #endif 127 boot(bootopt); 128 } 129 130 /* 131 * Warn that a system table is full. (kgdb) up #2 0xf01bd1d0 in vm_page_activate (m=0xf0309c70) at ../../vm/vm_page.c:703 703 panic("vm_page_activate: already active"); (kgdb) list 698 { 699 int s; 700 701 s = splvm(); 702 if (m->queue == PQ_ACTIVE) 703 panic("vm_page_activate: already active"); 704 705 if (m->queue == PQ_CACHE) 706 cnt.v_reactivated++; 707 (kgdb) print m $1 = (struct vm_page *) 0xf0309c70 (kgdb) print *m $2 = {pageq = {tqe_next = 0xf0318550, tqe_prev = 0xf02bf480}, hashq = { tqe_next = 0xf02e0720, tqe_prev = 0xf027f628}, listq = { tqe_next = 0xf0318550, tqe_prev = 0xf033e690}, object = 0xf37a1e00, pindex = 197, phys_addr = 41869312, queue = 4, flags = 52, wire_count = 0, hold_count = 0, act_count = 5 '\005', busy = 0 '\000', valid = 255 'ÿ', dirty = 255 'ÿ'} (kgdb) set radix 16 Input and output radices now set to decimal 16, hex 10, octal 20. (kgdb) print *m $3 = {pageq = {tqe_next = 0xf0318550, tqe_prev = 0xf02bf480}, hashq = { tqe_next = 0xf02e0720, tqe_prev = 0xf027f628}, listq = { tqe_next = 0xf0318550, tqe_prev = 0xf033e690}, object = 0xf37a1e00, pindex = 0xc5, phys_addr = 0x27ee000, queue = 0x4, flags = 0x34, wire_count = 0x0, hold_count = 0x0, act_count = 0x5, busy = 0x0, valid = 0xff, dirty = 0xff} (kgdb) print m $4 = (struct vm_page *) 0xf0309c70 (kgdb) pint s Undefined command: "pint". Try "help". (kgdb) print s $5 = 0x80000000 (kgdb) print cnt $6 = {v_swtch = 0xd24db, v_trap = 0x4ce50, v_syscall = 0x183927, v_intr = 0x30afb0, v_soft = 0x6b6bf, v_vm_faults = 0x4085c, v_cow_faults = 0xa896, v_zfod = 0x179bb, v_swapin = 0x3f3, v_swapout = 0xc8b, v_swappgsin = 0x693, v_swappgsout = 0x22a6, v_vnodein = 0xa36, v_vnodeout = 0x135c, v_vnodepgsin = 0x28c5, v_vnodepgsout = 0x1ef3, v_intrans = 0xb, v_reactivated = 0x311a, v_pdwakeups = 0x163, v_pdpages = 0x8ab71, v_dfree = 0x124, v_pfree = 0x1c08a, v_tfree = 0x56f57, v_page_size = 0x1000, v_page_count = 0x3d50, v_free_reserved = 0x1d, v_free_target = 0x104, v_free_min = 0x6a, v_free_count = 0x1c, v_wire_count = 0xc51, v_active_count = 0x225f, v_inactive_target = 0xec6, v_inactive_count = 0x76c, v_cache_count = 0x717, v_cache_min = 0x703, v_cache_max = 0x1c0e, v_pageout_free_min = 0x17, v_interrupt_free_min = 0x2} (kgdb) up #3 0xf01be8e4 in vm_pageout_scan () at ../../vm/vm_pageout.c:586 586 vm_page_activate(m); (kgdb) list 581 pmap_clear_reference(VM_PAGE_TO_PHYS(m)); 582 } 583 if ((m->flags & PG_REFERENCED) != 0) { 584 m->flags &= ~PG_REFERENCED; 585 pmap_clear_reference(VM_PAGE_TO_PHYS(m)); 586 vm_page_activate(m); 587 m = next; 588 continue; 589 } 590 (kgdb) print m $7 = (struct vm_page *) 0xf0309c70 (kgdb) print *m $8 = {pageq = {tqe_next = 0xf0318550, tqe_prev = 0xf02bf480}, hashq = { tqe_next = 0xf02e0720, tqe_prev = 0xf027f628}, listq = { tqe_next = 0xf0318550, tqe_prev = 0xf033e690}, object = 0xf37a1e00, pindex = 0xc5, phys_addr = 0x27ee000, queue = 0x4, flags = 0x34, wire_count = 0x0, hold_count = 0x0, act_count = 0x5, busy = 0x0, valid = 0xff, dirty = 0xff} (kgdb) print next $9 = (struct vm_page *) 0xf0318550 (kgdb) print *next $10 = {pageq = {tqe_next = 0xf03184f0, tqe_prev = 0xf0309c70}, hashq = { tqe_next = 0x0, tqe_prev = 0xf027f630}, listq = {tqe_next = 0xf031e790, tqe_prev = 0xf0309c80}, object = 0xf37a1e00, pindex = 0xc6, phys_addr = 0x2cc8000, queue = 0x4, flags = 0xb4, wire_count = 0x0, hold_count = 0x0, act_count = 0x5, busy = 0x0, valid = 0xff, dirty = 0xff} (kgdb) up #4 0xf01beeda in vm_pageout () at ../../vm/vm_pageout.c:862 862 vm_pageout_scan(); (kgdb) list 857 if (vm_pages_needed) 858 cnt.v_pdwakeups++; 859 vm_pages_needed = 0; 860 splx(s); 861 vm_pager_sync(); 862 vm_pageout_scan(); 863 vm_pager_sync(); 864 wakeup(&cnt.v_free_count); 865 } 866 } (kgdb) print s $11 = 0x7fffffff (kgdb) print vm_pages_needed $12 = 0x0 (kgdb) up #5 0xf0108386 in kproc_start (udata=0xf0203cd0) at ../../kern/init_main.c:255 255 (*kp->func)(); (kgdb) list 250 251 /* set up arg0 for 'ps', et al*/ 252 strcpy( p->p_comm, kp->arg0); 253 254 /* call the processes' main()...*/ 255 (*kp->func)(); 256 257 /* NOTREACHED */ 258 panic("kproc_start: %s", kp->arg0); 259 } (kgdb) print kp $13 = (struct kproc_desc *) 0xf0203cd0 (kgdb) print *kp $14 = {arg0 = 0xf01be057 "pagedaemon", func = 0xf01becf0 <vm_pageout>, global_procpp = 0xf024e04c} (kgdb) up #6 0xf0108324 in main (framep=0xefbfffb8) at ../../kern/init_main.c:205 205 (*((*sipp)->func))( (*sipp)->udata); (kgdb) list 200 case SI_TYPE_KTHREAD: 201 /* kernel thread*/ 202 if (fork(&proc0, NULL, rval)) 203 panic("fork kernel process"); 204 if (rval[1]) { 205 (*((*sipp)->func))( (*sipp)->udata); 206 /* 207 * The call to start "init" returns 208 * here after the scheduler has been 209 * started, and returns to the caller (kgdb) print spp No symbol "spp" in current context. (kgdb) print sipp $15 = (struct sysinit **) 0xf0209a58 (kgdb) print *sipp $16 = (struct sysinit *) 0xf0203cdc (kgdb) >How-To-Repeat: I do not know. Happened within 2 days from upgrading (the system has paniced several times during this time). >Fix: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605211045.NAA00441>