Skip site navigation (1)Skip section navigation (2)
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>