[Bug 206658] Bus error for pfctl -sa on rpi2 r294499 snap

Guy Yur guyyur at gmail.com
Thu Jan 28 21:26:33 UTC 2016


Hi,

On Thu, Jan 28, 2016 at 2:06 PM, Jov <amutu at amutu.com> wrote:
> bus error at the similar position:
>
> Program received signal SIGBUS, Bus error.
> 0x00021614 in print_host (addr=0x2065111a, port=15268, af=2 '\002',
> opts=1024) at /usr/src/sbin/pfctl/pf_print_state.c:178
> warning: Source file is more recent than executable.
>
> 178 memcpy(&aw.v.a.addr, addr, sizeof(aw.v.a.addr));
> Current language:  auto; currently minimal
> (gdb) p addr
> $1 = (struct pf_addr *) 0x2065111a
> ...
>
> Jov

The compiler optimizes the memcpy to a series of ldr and str
instructions and since addr is unaligned you still get SIGBUS.

I encountered the same problem on a BeagleBone Black.
https://lists.freebsd.org/pipermail/freebsd-arm/2014-January/007237.html

non-intrustive patch with changes only in print_state()
pfsync_state is __packed so the keys can be copied safely to
stack variables which will be aligned (and addr inside it).
https://github.com/guyyur/freebsd-src_patches/blob/master/pfctl_arm_segbus__ver1_part1.patch

Bug report with patch to separate pfsync and pfioc state
structures but breaks backward compatibility:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=185617

-- Guy


More information about the freebsd-arm mailing list