看板 DFBSD_bugs 關於我們 聯絡資訊
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@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.