tech-kern archive

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

Re: KASSERT() in kern_timeout.c



On Fri, Mar 19, 2010 at 04:25:15PM +0100, Manuel Bouyer wrote:
> On Fri, Mar 19, 2010 at 02:16:26PM +0000, Andrew Doran wrote:
> > On Fri, Mar 19, 2010 at 12:38:12PM +0100, Manuel Bouyer wrote:
> > > Hi,
> > > last night I got the panic below on a fairly busy ftp/http server
> > > (serving static content). The kernel is 5.0_STABLE from Jan, 19.
> > > Does it ring a bell to someone ?
> > 
> > I'll bet that c->c_cpu is from curcpu and that the callout is running,
> > nested below the softnet handler.  General solution: callout_halt() before
> > callout_destroy().  This may be tricky because it may need to drop the
> > mutex that you hold (in this instance softnet_lock).  See other instances of
> > callout_halt() in the TCP code.  I haven't checked the code to verify that
> > this is what's happening and I can't remember if the syncache code is 
> > already
> > using callout_halt().
> 
> AFAIK syncache is not using callout_halt(). It's testing callout_invoking()
> though. 
> I can't say if droping the softnet lock in syn_cache_put() (this is
> where the pool_put() really is) is safe or not.

Can someone familiar with the TCP code have a look at this ?
I've got several panic from this bug since I wrote this mail, I've
looked at it quickly and the fix doesn't look obvious ...

-- 
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
     NetBSD: 26 ans d'experience feront toujours la difference
--


Home | Main Index | Thread Index | Old Index