Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Hang when starting sshd on MP machine



> On Sat, Mar 22, 2008 at 03:40:55PM -0400, Chris Ross wrote:
> 
> > 
> > On Mar 22, 2008, at 10:25, Andrew Doran wrote:
> > >It's a deadlock involving kernel_lock. Haven't figured out what the  
> > >problem
> > >is yet, but I've put kernel_lock back around the kqueue stuff which  
> > >should
> > >sort it for the time being.
> > 
> >   Putting kernel_lock back avoids the problem, helps figure out where  
> > the problem is, or both? 
> 
> It avoids the problem.
> 
> > If the former, then is there any help those of us only testing and not yet
> > needing any term of multiuser functionality could do to provide data to
> > help track it down?
> 
> I think it's case of trying to understand where the dealock is coming from.
> It looks like a lock order reversal. I think what is happening is that one
> thread is acquiring:
> 
>       kernel_lock -> kq_lock
> 
> .. and another is acquiring:
> 
>       kq_lock -> kernel_lock.
> 
> They both deadlock waiting for each other's lock. Given a quick look I
> haven't been able to find that.
> 
> Andrew

while kqueue_scan drops kq_lock to call f_event,
'kn' can be modified by eg. knote_activate.
it can cause the list corruption and make kqueue_scan loops
indefinitely with kq_lock held.

YAMAMOTO Takashi


Home | Main Index | Thread Index | Old Index