On Mon, 7 Oct 2002, Terry Lambert wrote:

> Stefan Farfeleder wrote:
> > 
> > I'm confused why marker - if it was removed by TAILQ_REMOVE - hasn't
> > kn_tqe.tqe_next and kn_tqe.tqe_prev set to (void *)-1.

because that only happens if the debug code in queue.h is enabled, which
it is not..


> 
> OK, what this means is that the marker queue entry was removed
> by something else going in there.
> 
> THis shouldn't happen.
> 
> Try adding this before the initialization of the marker data:
> 
>       bzero(&marker, sizeof(marker));
> 
> That should keep it from matching any removal criteria.  THe only
> way this could keep crashing after this mod is if the queue is
> being destroyed out from under you.
> 
> The implication here is that the queue should be protected by the
> object lock for the object for which the pointer to the queue
> instance is an element.
> 
> Fixing this would be very hard (IMO).
> 
> The next step (assuming it still panics) is to add:
> 
>       #define KQ_FREE 0x80
> 
> ...and set it into kq_state on a kqueue that has been freed and/or
> deallocated somewhere (then check to see if it's set, after the
> panic).  Ugly, but it will tell you whether or not that's what's
> happening (scanning a dead queue).
> 
> The worst case is scanning a dead queue quose memory has been
> reused for some other purpose.  8-(.
> 
> I can't personally repeat the problem, so you're elected to do
> the legwork on this one.  8-(.
> 
> -- Terry
> 
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-current" in the body of the message
> 


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to