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