Subject: Re: Another serious bug in NetBSD-1.6.1
To: David Laight <david@l8s.co.uk>
From: Brian Buhrow <buhrow@lothlorien.nfbcal.org>
List: tech-kern
Date: 03/13/2003 19:10:30
Hello. In looking at genfs_putpages() further, and observing the
behavior, I note that the trouble seems to hit when there is a flurry of
disk activity, i.e. when a bunch of files are being created or modified
simultaneously. I do not know enough about the internals of uvm and the
genfs routines, but I'm suspicious of the placement of the s = sblbio()
calls in the genfs_putpages() routine, particularly those near places where
pmap_clear_modify() is called. I'm sure there's a race condition in here,
and it smells funny around those calls.
Anyone who knows more about the internals of this code than I do, (not
a hard thing to do :)) care to comment on how this code keeps others out
when it's calling pmap_clear_modify?
It's probably stating the obvious, but what I think is happening is
that the kernel is running on an alternate page table at the time an
unscheduled event comes in, perhaps an interrupt, and causes a page fault
which then causes a panic because there's no page there to fault to in the
page table? So the question is, who is coming in and how can they be kept
out?
Is it possible to tell who might be in there from my core files?
-thanks
-Brian