dummynet / ipfw2: panic, double fault

Luigi Rizzo rizzo at icir.org
Mon Sep 3 12:43:47 PDT 2007


On Tue, Sep 04, 2007 at 12:50:36AM +0700, Vadim Goncharov wrote:
> 03.09.07 @ 23:48 Andrey V. Elsukov wrote:
> 
> > I got a trace for this fault.
> > dummynet reinject packet to the ip_input through netisr_dispath.
> > This procedure was done success several times, but in the next time
> > it's fault.
...
> As we can see from comment in /sys/i386/i386/trap.c:
> 
>   * Double fault handler. Called when a fault occurs while writing
>   * a frame for a trap/exception onto the stack. This usually occurs
>   * when the stack overflows (such is the case with infinite recursion,
>   * for example).
> 
> That's look like our case, repeating calls, as in infinite recursion. I  
> suppose that interrupt thread's stack in the kernel is too small for this  
> case. Quick-n-dirty hackish solution could be increasing stack size, but  
> that could be overriden by another bunch of rules. Alas, I am not a  
> VM/netisr guru to find the right way...

interesting analysis - but if that is the case i don't understand why
the netisr_dispatch routine is called recursively instead of waiting
for the previous handler (which is the one who makes the 'recursive'
call) to terminate - without looking at the code, i would think that
there is a lock of some kind to prevent this ?

	cheers
	luigi


More information about the freebsd-ipfw mailing list