panic: assertion: pmap->pm_stats.resident_count > 0 in pmap_release_free_page

YONETANI Tomokazu qhwt+dfly at les.ath.cx
Mon Dec 28 19:07:16 PST 2009


On Wed, Dec 23, 2009 at 08:42:47PM -0800, Matthew Dillon wrote:
>     I'm thinking possibly something in the pmap unwiring code, possibly
>     in _pmap_unwire_pte_hold(), could be racing.
> 
>     Here is a patch to try.  It adds a bunch of assertions in an attempt
>     to catch the potential race.
> 
> 					-Matt
> 					Matthew Dillon 
> 					<dillon at backplane.com>
> 
> diff --git a/sys/platform/pc32/i386/pmap.c b/sys/platform/pc32/i386/pmap.c
> index 53cc386..b07f2cf 100644

I tried changing the number of CPUs on vkernel from 16 to 4 and reduced
the -j number given to make command, then I get a panic in a different place:

(kgdb) bt
			:
#4  0xc01a14fc in panic (fmt=0xc030329e "assertion: %s in %s")
    at /usr/src/sys/kern/kern_shutdown.c:743
#5  0xc02d88c5 in pmap_remove_pages (pmap=0xd6ea6fb4, sva=0, eva=3217031168)
    at /usr/src/sys/platform/pc32/i386/pmap.c:2856
#6  0xc02a5ee8 in vmspace_entry_delete (ve=0xdae62b40,
    vkp=<value optimized out>) at /usr/src/sys/vm/vm_vmspace.c:514
#7  0xc02a639a in sys_vmspace_destroy (uap=0xdbadecf0)
    at /usr/src/sys/vm/vm_vmspace.c:147
#8  0xc02dcd8c in syscall2 (frame=0xdbaded40)
    at /usr/src/sys/platform/pc32/i386/trap.c:1359
#9  0xc02c83f6 in Xint0x80_syscall ()
    at /usr/src/sys/platform/pc32/i386/exception.s:876
			:
(kgdb) fr
#5  0xc02d88c5 in pmap_remove_pages (pmap=0xd6ea6fb4, sva=0, eva=3217031168)
    at /usr/src/sys/platform/pc32/i386/pmap.c:2856
2856                    KKASSERT(*pte);
(kgdb) info locals
lp = <value optimized out>
pte = 0xff80cff8
tpte = <value optimized out>
pv = 0xc2ebca9c
npv = 0xdbadec8c
m = 0xdaebbc30
info = {pir_flags = 0, pir_cpusync = {cs_run_func = 0xdaec4d00,
    cs_fin1_func = 0x1d, cs_fin2_func = 0, cs_data = 0x0,
    cs_maxcount = -609358712, cs_count = -1070966064, cs_mask = 3273535440}}
iscurrentpmap = 0
save_generation = <value optimized out>
__func__ = "pmap_remove_pages"

The kernel and vmcore are in ~y0netan1/crash/{kern,vmcore}.22 .
The kernel is compiled from source as of a307f7025 and your patch applied.





More information about the Bugs mailing list