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
>
> [email protected]:/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);