tech-net archive

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

Re: panic: tcp_output REXMT

On Tue, Sep 02, 2008 at 11:45:07AM +0200, Edgar Fuß wrote:
> >Manuel Bouyer wrote:
> >But I don't understand how it could cause a tcp_setpersist() panic.  
> >If I
> >understand it properly, we can't have TCPT_REXMT and TCPT_PERSIST  
> >armed
> >at the same time. Here the path comes from TCPT_PERSIST's handler so
> >it was armed. Nothing arms TCPT_PERSIST outside of tcp_setpersist(),
> >so TCPT_REXMT has been armed after TCPT_PERSIST was.
> >
> >syn_cache_get() can arm TCPT_REXMT without checking TCPT_PERSIST.
> >I don't know if TCPT_PERSIST could have been armed before at this  
> >point.
> >
> >I couldn't find other places where TCPT_REXMT would be armed without
> >checking TCPT_PERSIST.
> Without having enough time atm to look into this thoroughly just now:
> It looks like tcp_timer_rexmt() can also (re-)arm the retransmit timer.

It does. But that's not and issue: if TCPT_REXMT fires it was armed, and
so TCPT_PERSIST should not be.

> I'm easily confused by the fact that counter-intuitively,  
> TCP_TIMER_ISARMED() doesn't mean "the timer is running and going to  
> fire any moment", but "the timer has been armed in the past and not  
> disarmed since".
> Would it be an option for you to try the patch (modified as yamt@  
> wrote) and check whether the panic persists?

Well, I see the panic only once every few months. I can't see how this
would fix it, and if it did, I think it would just hide the real bug.

Manuel Bouyer <>
     NetBSD: 26 ans d'experience feront toujours la difference

Home | Main Index | Thread Index | Old Index