Trying to get a stress test consisting of a bunch of fsx, fsstress and dbench running this combination leads within minutes to a failed assertion "(npte & PG_RW) != 0" in file x86/x86/pmap.c.
With some tracing I always get the same pattern: - fsx gets a trap(), user memory, write. -> the uobj is a vnode with VI_WRMAPDIRTY set. - uvm_fault_lower() has to call uvm_fault_lower_io() as uobjpage is zero. - short before uvm_fault_lower_io() has a chance to re-lock uobj another thread comes through genfs_do_putpages() and clears VI_WRMAPDIRTY. - uvm_fault_lower_direct() sees UVM_OBJ_NEEDS_WRITEFAULT() and clears VM_PROT_WRITE. - pmap_enter_ma() fires the assertion "(npte & PG_RW) != 0". ~ one of ten times I get the assertion "(uobj == NULL || !UVM_OBJ_IS_CLEAN(uobjpage->uobject) || (uobjpage->flags & PG_CLEAN) != 0);" which may be related. Any ideas? -- Juergen Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)