[Bug 195407] New: relayd crashes kernel after update to 10.1-RELEASE

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Nov 26 10:34:00 UTC 2014


            Bug ID: 195407
           Summary: relayd crashes kernel after update to 10.1-RELEASE
           Product: Base System
           Version: 10.1-RELEASE
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: andrej.kolontai at verwaltung.uni-muenchen.de

Created attachment 149878
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=149878&action=edit
kernel crash report

We are using FreeBSD for our Firewalls and are actually happy with it. Since
recently we use relayd (installed via pkg) to do some load balancing stuff. On
a freshly installed machine running 10.0-RELEASE everything worked fine. 
On monday, I tried to upgrade to 10.1-RELEASE using freebsd-update as described
in the handbook chapter 24. At first everything looked good but relayd wouldn't
come up:

"Nov 24 10:50:48 flutters relayd[3300]: fatal: cannot add rule: Operation not
supported by device
Nov 24 10:50:48 flutters relayd[3293]: lost child: pfe exited abnormally"

When I tried to start it with /usr/local/etc/rc.d/relayd start the kernel
panicked. I had to roll back the update (which worked fine). However, I was
able to reproduce this behavior on a virtual machine. 

My guess is it happens here:
#7  0xffffffff81a37954 in pfr_detach_table (kt=0x0)
    at /usr/src_10.1.0/sys/modules/pf/../../netpfil/pf/pf_table.c:2047

The corresponding code is:
pfr_detach_table(struct pfr_ktable *kt)

        KASSERT(kt->pfrkt_refcnt[PFR_REFCNT_RULE] > 0, ("%s: refcount %d\n",
            __func__, kt->pfrkt_refcnt[PFR_REFCNT_RULE]));

        if (!--kt->pfrkt_refcnt[PFR_REFCNT_RULE])
                pfr_setflags_ktable(kt, kt->pfrkt_flags&~PFR_TFLAG_REFERENCED);

>From what I know about C programming: kt is not supposed to be 0x0. 
My guess was that some data structure has changed between 10.0 and 10.1
kernels. So a recompile of relayd should fix that. It did. I compiled it from
the ports and it worked. 

Here's a procedure to reproduce the situation:

* install FreeBSD 10.0-RELEASE, relayd (configure it, start pf and relayd)
* update to FreeBSD 10.1-RELEASE using freebsd-update as described in the
* after some reboots start pf and relayd. After startup, relayd will simply
crash. After the second startup (wait some seconds) the kernel will crash. 

doing a pkg update, pkg upgrade after freebsd-update won't help. In fact, the
relayd binaries seem to be identical on 10.0 and 10.1.

You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-bugs mailing list