Thanks, you caught me in transition.  I'll be able to report a bit later.

FWIW, I've been running this firewall for years w/ -current.  This is the first
time I can remember this type of show stopper.  The pf rules haven't been
changed much in the past year and not at all between the Jun 22 and Jul 28
snapshots.  If necessary, I can provide them privately.


On 07/31/15 11:22, Mike Belopuhov wrote:
> On Fri, Jul 31, 2015 at 10:57 -0400, RD Thrush wrote:
>>> Synopsis:   panic in sys/net/pf_lb.c
>>> Category:   kernel
>>> Environment:
>>      System      : OpenBSD 5.8
>>      Details     : OpenBSD 5.8 (GENERIC) #1047: Thu Jul 30 23:24:48 MDT 2015
>>                       
>> dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
>>
>>      Architecture: OpenBSD.i386
>>      Machine     : i386
>>> Description:
>>      Repeatable crash after a few minutes with Jul 28,29 and 30 snapshots.
>>      Crashes w/ Jul 30 sp and mp snapshots w/ kern.pool_debug set to 0/1.
>>      The ddb transcript containing the following commands is appended:
>>              trace
>>              ps
>>              show registers
>>              show malloc
>>              show proc
>>              show uvmexp
>>              callout
>>              ps /w
>>              ps /a
>>              show bcstats
>>              show all pools
>>              show all pools /a
>>              show extents
>>              boot sync
>>      Please note that usbdevs and pcidump were done w/ the Jun 22 snapshot.
>>      acpi doesn't exist on this soekris 5501.
>>> How-To-Repeat:
>>      Install recent snapshot, sysmerge, reboot and wait a few minutes.
>>> Fix:
>>      Reboot with Jun 22 sp snapshot.  According to cvs, the panic diagnostic
>>      was added Jul 20 to src/sys/net/pf_lb.c.
>>
> 
> Can you please try this diff.
> 
> diff --git sys/net/pf_lb.c sys/net/pf_lb.c
> index 4e8d0cd..2c36b45 100644
> --- sys/net/pf_lb.c
> +++ sys/net/pf_lb.c
> @@ -866,14 +866,13 @@ pf_postprocess_addr(struct pf_state *cur)
>       }
>  
>       /* check for appropriate pool */
> +     memset(&rpool, 0, sizeof(rpool));
>       if (nr->rdr.addr.type != PF_ADDR_NONE)
>               rpool = nr->rdr;
>       else if (nr->nat.addr.type != PF_ADDR_NONE)
>               rpool = nr->nat;
>       else if (nr->route.addr.type != PF_ADDR_NONE)
>               rpool = nr->route;
> -     else
> -             panic("no appropriate pool");
>  
>       if (((rpool.opts & PF_POOL_TYPEMASK) != PF_POOL_LEASTSTATES))
>               return (0);
> 

Reply via email to