Date: Sun, 28 Apr 2002 10:11:37 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Robert Watson <rwatson@FreeBSD.ORG> Cc: current@FreeBSD.ORG Subject: Re: Page fault in swp_pager_meta_build() Message-ID: <200204281711.g3SHBbY53495@apollo.backplane.com> References: <Pine.NEB.3.96L.1020428093215.64976I-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:(Matt gets CC'd because he's just unlucky :-) : :This system is (as always) a pxeboot'd nfsroot'd dual processor box. This :time, however, it's running straight GENERIC from the main tree instead of :the MAC branch. The box network boots, does a buildkernel -j 8, and then :reboots. It currently has no configured swap, suggesting that things :broke down when it tried to think about using some swap. Not sure how :many loops it took to get to this, but I've seen a couple of different :panics that I'll be posting about as they recur. I'm actually trying to :track an odd mbuf/nfs interaction... No idea, but the last time someone had a weird swap issue it turned out that they had swapon'd the same swap partition twice. The system's checks are not sufficient if you swapon the same device from different mounts. So check that first. The swap code preallocates its bitmap space, the hash table array is malloc'd once at boot time, and the swblock is zalloc()'d. From the looks of it the hash chain either got corrupted somehow or part of the kernel's KVM space containing either the hash table or the swblock's got corrupted. Unless someone worked on the swap code recently I would focus on either the memory subsystem or on unrelated kernel subsystems blowing up KVK. -Matt Matthew Dillon <dillon@backplane.com> :Fatal trap 12: page fault while in kernel mode :cpuid = 0; lapic.id = 00000000 :fault virtual address = 0x20097479 :fault code = supervisor read, page not present :instruction pointer = 0x8:0xc0337da8 :stack pointer = 0x10:0xc8f22b2c :frame pointer = 0x10:0xc8f22b38 :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 = 2 (pagedaemon) :kernel: type 12 trap, code=0 :Stopped at swp_pager_meta_build+0xf0: cmpl %ebx,0x4(%eax) :db> trace :swp_pager_meta_build(c97ff120,0,80000000) at swp_pager_meta_build+0xf0 :swap_pager_putpages(c97ff120,c8f22c34,4,0,c8f22bbc) at :swap_pager_putpages+0x57 :default_pager_putpages(c97ff120,c8f22c34,4,0,c8f22bbc,c0428be0,1,c03ebb80,8e) :at default_pager_putpages+0x17 :vm_pageout_flush(c8f22c34,4,0,c03d0c7a,246) at vm_pageout_flush+0xe5 :vm_pageout_clean(c0a09204) at vm_pageout_clean+0x1ec :vm_pageout_scan(0,c034469c,c8f22d34,c023d838,0) at vm_pageout_scan+0x35a :vm_pageout(0,c8f22d48,c8e2c728,c034469c,0) at vm_pageout+0x231 :fork_exit(c034469c,0,c8f22d48) at fork_exit+0x88 :fork_trampoline() at fork_trampoline+0x37 : :(kgdb) l *swp_pager_meta_build+0xf0 :0xc0337da8 is in swp_pager_meta_build (../../../vm/swap_pager.c:1654). :1649 struct swblock *swap; :1650 :1651 index &= ~SWAP_META_MASK; :1652 pswap = &swhash[(index ^ (int)(intptr_t)object) & swhash_mask]; :1653 while ((swap = *pswap) != NULL) { :1654 if (swap->swb_object == object && :1655 swap->swb_index == index :1656 ) { :1657 break; :1658 } : : :Robert N M Watson FreeBSD Core Team, TrustedBSD Project :robert@fledge.watson.org NAI Labs, Safeport Network Services To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204281711.g3SHBbY53495>