Further debugging led me to the conclusion that the problem is in
pmap_protect(), in src/sys/i386/i386/pmap.c; and has to do with a
32-bit-truncated pt_entry_t being passed to PHYS_TO_VM_PAGE().
(pt_entry_t is 64 bits if the kernel is built with PAE.)  This caused
a page fault in vm_page_flag_set() which left the thread deadlocked
while holding vm_page_queue_mtx and in turn led to a panic when
another thread tried to acquire vm_page_queue_mtx.

Then I checked the cvs logs, and saw rev 1.524, which looks like what
I was thinking about as a fix, so I'm giving it a spin on top of
earlier-this-week's RELENG_5.  Thus far I'll say that with that change
my usual way of provoking the problem hasn't, yet.

I'm going to try to get this PC put back into co-lo where it can 
get some production-like testing this weekend.  It'd be nice to get
this fix MFC'd to RELENG_5 too.

-Frank McConnell
_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to