Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Sep 2004 16:30:38 -0400
From:      John Baldwin <jhb@FreeBSD.org>
To:        Pavel Gubin <pg@ie.tusur.ru>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: "xlock already held" panics on 5.3-BETA(3,4,5)
Message-ID:  <200409241630.38058.jhb@FreeBSD.org>
In-Reply-To: <20040924201256.GB67823@ie.tusur.ru>
References:  <20040922095257.GA81709@ie.tusur.ru> <200409231029.47945.jhb@FreeBSD.org> <20040924201256.GB67823@ie.tusur.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 24 September 2004 04:12 pm, Pavel Gubin wrote:
> On Thu, Sep 23, 2004 at 10:29:47AM -0400, John Baldwin wrote:
> > > > > panic: _sx_xlock (user map): xlock already held @
> > > > > /var/data/5/src/sys/vm/vm_map.c:2997 cpuid = 0
> > > > > KDB: stack backtrace:
> > > > > kdb_backtrace(100,c0f794e0,c0e983c8,1,bb5) at kdb_backtrace+0x29
> > > > > panic(c05eaffa,c05d320c,c05fd313,c05fd393,bb5) at panic+0x114
> > > > > _sx_xlock(c0e983c8,c05fd393,bb5) at _sx_xlock+0x44
> > > > > _vm_map_lock_read(c0e98384,c05fd393,bb5,1f49a0c,c113692c) at 
> > > > > _vm_map_lock_read+0x37
> > > > > vm_map_lookup(c9f49a64,bfca2000,1,c9f49a68,c9f49a58) at
> > > > > vm_map_lookup+0x28 vm_fault(c0e98384,bfca2000,1,0,c0f794e0) at
> > > > > vm_fault+0x66
> > > > > trap_pfault(c9f49b2c,0,bfca253c) at trap_pfault+0xd2
> > > > > trap(18,10,10,c0e98444,c0c95c48) at trap+0x30d
> > > > > calltrap() at calltrap+0x5
> > > > > --- trap 0xc, eip = 0xc05b541c, esp = 0xc9f49b6c, ebp = 0xc9f49b78
> > > > > --- pmap_enter_quick(c0e98444,2894f000,c0d7c2e8,0,0) at
> > > > > pmap_enter_quick+0xc8
> > > >
> > > > This is the real bug, can you do 'l *0xc05b541c' from kgdb?
> > >
> > > (kgdb) l *0xc05b541c
> > > 0xc05b541c is in pmap_enter_quick
> > > (/var/data/5/src/sys/i386/i386/pmap.c:2130).
>
> []
>
> > > 2129            pte = vtopte(va);
> > > 2130            if (*pte) {
> > > 2131                    if (mpte != NULL) {
> > > 2132                            pmap_unwire_pte_hold(pmap, mpte);
> > > 2133                            mpte = NULL;
> > > 2134                    }
>
>   I've digged a bit...
>   Seems that `if (*pte)' causes a Page Fault. So, is it legal for page to
> be non-resident here?

Well, I think the pte pointer is NULL meaning perhaps that there is no pte for 
the virtual address 'va', but alc@ or peter@ should know more about that than 
I.

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



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