>Synopsis: PF crash with -current
>Category: network
>Environment:
System : OpenBSD 6.9
Details : OpenBSD 6.9-current (GENERIC) #787: Wed Apr 28 10:12:43
MDT 2021
[email protected]:/usr/src/sys/arch/i386/compile/GENERIC
Architecture: OpenBSD.i386
Machine : i386
>Description:
After some minutes with PF enabled, the kernel is crashing.
I use this machine as Wifi AP.
>How-To-Repeat:
ddb>
ddb> trace
db_enter() at db_enter+0x4
panic(d0c23085) at panic+0xd3
kpageflttrap(f397ef40,efffab77) at kpageflttrap+0x137
trap(f397ef40) at trap+0x240
calltrap() at calltrap+0xc
pf_state_key_detach(d176b574,1) at pf_state_key_detach+0xc3
pf_remove_state(d176b574) at pf_remove_state+0x1ae
pf_purge_expired_states(7) at pf_purge_expired_states+0x20e
pf_purge(d0f34040) at pf_purge+0x28
taskq_thread(d19e0040) at taskq_thread+0x51
ddb>
ddb> ps
PID TID PPID UID S FLAGS WAIT COMMAND
91680 102503 86353 0 3 0x90 netio perl
84928 487950 1 0 3 0x100083 ttyin getty
50357 420093 1 0 3 0x100098 poll cron
86353 444402 1 0 3 0x90 select perl
26805 471539 1 110 3 0x100090 poll sndiod
44815 194553 1 99 3 0x100090 poll sndiod
92894 38657 39396 95 3 0x100092 kqread smtpd
61491 332672 39396 103 3 0x100092 kqread smtpd
24366 349089 39396 95 3 0x100092 kqread smtpd
20583 221597 39396 95 3 0x100092 kqread smtpd
67163 132034 39396 95 3 0x100092 kqread smtpd
77706 254966 39396 95 3 0x100092 kqread smtpd
39396 386710 1 0 3 0x100080 kqread smtpd
50369 182299 1 0 3 0x80 select sshd
39209 467868 97466 83 3 0x100092 poll ntpd
97466 58794 48591 83 3 0x100092 poll ntpd
48591 467956 1 0 3 0x100080 poll ntpd
49544 87172 18811 74 3 0x100092 bpf pflogd
18811 89146 1 0 3 0x80 netio pflogd
31306 123062 57102 73 3 0x100090 kqread syslogd
57102 520337 1 0 3 0x100082 netio syslogd
--db_more-- 66513 416718 12345 115 3 0x100092
kqread slaacd
65901 456997 12345 115 3 0x100092 kqread slaacd
12345 236602 1 0 3 0x100080 kqread slaacd
85951 82815 1 0 3 0x80 mfsidl mount_mfs
50282 504359 0 0 3 0x14200 bored smr
16344 105381 0 0 3 0x14200 pgzero zerothread
22682 490669 0 0 3 0x14200 aiodoned aiodoned
21005 275523 0 0 3 0x14200 syncer update
267 494740 0 0 3 0x14200 cleaner cleaner
16645 268424 0 0 3 0x14200 reaper reaper
91185 338378 0 0 3 0x14200 pgdaemon pagedaemon
40905 20775 0 0 3 0x14200 bored crynlk
3814 448551 0 0 3 0x14200 bored crypto
81885 332216 0 0 3 0x14200 usbtsk usbtask
77033 54567 0 0 3 0x14200 usbatsk usbatsk
68119 192458 0 0 3 0x14200 bored sensors
*73472 495669 0 0 7 0x14200 softnet
3192 480294 0 0 3 0x14200 bored systqmp
66611 471807 0 0 3 0x14200 bored systq
78985 518909 0 0 3 0x40014200 bored softclock
73474 63273 0 0 3 0x40014200 idle0
9405 333972 0 0 3 0x14200 kmalloc kmthread
1 352606 0 0 3 0x82 wait init
--db_more-- 0 0 -1 0 3 0x10200
scheduler swapper
ddb>
ddb> show panic
uvm_fault(0xd0f28590, 0xefffa000, 0, 1) -> d
ddb>
ddb> show pool
POOLpanic: uvm_fault(0xd0f28590, 0xf4bee000, 0, 1) -> e
Stopped at db_enter+0x4: popl %ebp
db_enter() at db_enter+0x4
panic(d0c23085) at panic+0xd3
kpageflttrap(f397ec18,f4bee856) at kpageflttrap+0x137
trap(f397ec18) at trap+0x240
calltrap() at calltrap+0xc
strlen(f4bee856) at strlen+0x10
kprintf() at kprintf+0xacf
db_printf(d0bcb2ce) at db_printf+0x37
pool_print1(d02bd7a4,f397ed54,d074a530) at pool_print1+0x4c
db_pool_print_cmd(d02bd7a4,0,ffffffff,f397ed54) at
db_pool_print_cmd+0x13
db_command(d0e22ed8,d0de1480) at db_command+0x2ac
db_command_loop() at db_command_loop+0x7b
db_trap(1,0) at db_trap+0x10f
db_ktrap(1,0,f397ee78) at db_ktrap+0xcd
ddb>
ddb> show mbuf
mbuf 0xd02bd7a4
m_type: 22103 m_flags:
ec83<M_EXT,M_PKTHDR,M_CONF,M_AUTH,M_ZEROIZE,M_COMP,M_L
INK0>
m_next: 0xccccc35d m_nextpkt: 0xcccccccc
m_data: 0xcccccccc m_len: 1407551829
m_dat: 0xd02bd7bc m_pktdat: 0xd02bd7f8
m_ptkhdr.ph_ifidx: 79987456 m_pkthdr.len: 585984
m_ptkhdr.ph_tags: 0xf04589d0 m_pkthdr.ph_tagsset:
c483<IPSEC_IN_DONE,IPSEC_O
UT_DONE,GRE,CARP_BAL_IP>
m_pkthdr.ph_flowid: 32772 m_pkthdr.ph_loopcnt: 83
m_pkthdr.csum_flags:
404e<TCP_CSUM_OUT,UDP_CSUM_OUT,IPV4_CSUM_IN_OK,TCP_CSUM_IN
_BAD,FLOWID>
m_pkthdr.ether_vtag: 22023 m_ptkhdr.ph_rtableid: 82920
m_pkthdr.pf.statekey: 0xc4830008 m_pkthdr.pf.inp 0xa0558d04
m_pkthdr.pf.qid: 347717681 m_pkthdr.pf.tag: 0
m_pkthdr.pf.flags:
d7<GENERATED,SYNCOOKIE_RECREATED,TRANSLATE_LOCALHOST,DIVERTE
D_PACKET,REFRAGMENTED,PROCESSED>
m_pkthdr.pf.routed: 243 m_pkthdr.pf.prio: 171
m_ext.ext_buf: 0x5b845c7 m_ext.ext_size: 820004295
m_ext.ext_free_fn: 0 m_ext.ext_arg: 0xbc45c700
m_ext.ext_nextref: 0x52000010 m_ext.ext_prevref: 0xf4bee856
ddb>
ddb> show proc
PROC (softnet) pid=495669 stat=onproc
flags process=14000<NOZOMBIE,SYSTEM> proc=200<SYSTEM>
pri=32, usrpri=51, nice=20
forw=0xffffffff, list=0xd19cb194,0xd19cb330
process=0xff7fe9e0 user=0xf397d000, vmspace=0xd0f31518
estcpu=1, cpticks=2, pctcpu=0.0
user=0, sys=2, intr=0
ddb>
ddb> show registers
ds 0x10
es 0x10
fs 0x20
gs 0
edi 0xd0c23085 apollo_pio_rec+0x2824
esi 0x104
ebp 0xf397eb90
ebx 0xf397ebb8
edx 0x3fd
ecx 0
eax 0x1
eip 0xd02bd7a4 db_enter+0x4
cs 0x8
eflags 0x202
esp 0xf397eb90
ss 0x10
db_enter+0x4: popl %ebp
ddb>
ds 0x10
es 0x10
fs 0x20
gs 0
edi 0xd0c23085 apollo_pio_rec+0x2824
esi 0x104
ebp 0xf397eb90
ebx 0xf397ebb8
edx 0x3fd
ecx 0
eax 0x1
eip 0xd02bd7a4 db_enter+0x4
cs 0x8
eflags 0x202
esp 0xf397eb90
ss 0x10
db_enter+0x4: popl %ebp
ddb>
ddb> show socket
socket 0xd02bd7a4
so_type: -30379
so_options: 0x53e5
so_linger: 22103
so_state: 0xcccccccc
so_pcb: 0xcccccccc
so_proto: 0xccccc35d
so_sigio: 0x8004c483
so_head: 0x8758b54
so_onq: 0xddf400a1
so_q0: @0xd02bd7c0 first: 0xf04589d0
so_q: @0xd02bd7c8 first: 0xe8530000
so_eq: next: 0x5607404e
so_q0len: -32000
so_qlen: 1220
so_qlimit: -6061
so_timeo: -3862
so_obmark: 3296919560
so_sp: 0x14b9c031
panic: uvm_fault(0xd0f31518, 0x14b9c000, 0, 1) -> e
Stopped at db_enter+0x4: popl %ebp
db_enter() at db_enter+0x4
panic(d0c23085) at panic+0xd3
--db_more-- kpageflttrap(f397e9ac,14b9c031) at
kpageflttrap+0x137
trap(f397e9ac) at trap+0x240
calltrap() at calltrap+0xc
so_print(d02bd7a4,d074a530) at so_print+0x181
db_socket_print_cmd(d02bd7a4,0,ffffffff,f397ea2c) at
db_socket_print_cmd+0x10
db_command(d0e22ed8,d0de1480) at db_command+0x2ac
db_command_loop() at db_command_loop+0x7b
db_trap(1,0) at db_trap+0x10f
db_ktrap(1,0,f397eb50) at db_ktrap+0xcd
trap(f397eb50) at trap+0x46d
calltrap() at calltrap+0xc
db_enter() at db_enter+0x4
ddb>
[EOT]
>Fix:
Disabling PF prevents the crash. The crash seems to be related to PF.
SENDBUG: Run sendbug as root if this is an ACPI report!
SENDBUG: dmesg and usbdevs are attached.
SENDBUG: Feel free to delete or use the -D flag if they contain sensitive
information.
dmesg:
OpenBSD 6.9-current (GENERIC) #787: Wed Apr 28 10:12:43 MDT 2021
[email protected]:/usr/src/sys/arch/i386/compile/GENERIC
real mem = 267931648 (255MB)
avail mem = 246702080 (235MB)
random: good seed from bootblocks
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: date 11/05/08, BIOS32 rev. 0 @ 0xfd088
pcibios0 at bios0: rev 2.1 @ 0xf0000/0x10000
pcibios0: pcibios_get_intr_routing - function not supported
pcibios0: PCI IRQ Routing information unavailable.
pcibios0: PCI bus #0 is the last bus
bios0: ROM list: 0xe0000/0xa800
cpu0 at mainbus0: (uniprocessor)
cpu0: Geode(TM) Integrated Processor by AMD PCS ("AuthenticAMD" 586-class) 499
MHz, 05-0a-02
cpu0: FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CFLUSH,MMX,MMXX,3DNOW2,3DNOW
mtrr: K6-family MTRR support (2 registers)
pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
pchb0 at pci0 dev 1 function 0 "AMD Geode LX" rev 0x33
glxsb0 at pci0 dev 1 function 2 "AMD Geode LX Crypto" rev 0x00: RNG AES
vr0 at pci0 dev 9 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 10, address
00:0d:b9:2b:62:c8
ukphy0 at vr0 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063,
model 0x0034
vr1 at pci0 dev 10 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 11, address
00:0d:b9:2b:62:c9
ukphy1 at vr1 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063,
model 0x0034
vr2 at pci0 dev 11 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 15, address
00:0d:b9:2b:62:ca
ukphy2 at vr2 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 0x004063,
model 0x0034
athn0 at pci0 dev 12 function 0 "Atheros AR9280" rev 0x01: irq 9
athn0: AR9280 rev 2 (2T2R), ROM rev 21, address 30:14:4a:15:ba:bb
glxpcib0 at pci0 dev 15 function 0 "AMD CS5536 ISA" rev 0x03: rev 3, 32-bit
3579545Hz timer, watchdog, gpio, i2c
gpio0 at glxpcib0: 32 pins
iic0 at glxpcib0
maxtmp0 at iic0 addr 0x4c: lm86
pciide0 at pci0 dev 15 function 2 "AMD CS5536 IDE" rev 0x01: DMA, channel 0
wired to compatibility, channel 1 wired to compatibility
wd0 at pciide0 channel 0 drive 0: <CF 4GB>
wd0: 1-sector PIO, LBA, 3831MB, 7847280 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2
pciide0: channel 1 ignored (disabled)
ohci0 at pci0 dev 15 function 4 "AMD CS5536 USB" rev 0x02: irq 12, version 1.0,
legacy support
ehci0 at pci0 dev 15 function 5 "AMD CS5536 USB" rev 0x02: irq 12
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 configuration 1 interface 0 "AMD EHCI root hub" rev 2.00/1.00
addr 1
isa0 at glxpcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com0: console
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
usb1 at ohci0: USB revision 1.0
uhub1 at usb1 configuration 1 interface 0 "AMD OHCI root hub" rev 1.00/1.00
addr 1
nvram: invalid checksum
dt: 443 probes
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
root on wd0a (9a03e090a85ec7ef.a) swap on wd0b dump on wd0b
WARNING: / was not properly unmounted
clock: unknown CMOS layout
usbdevs:
Controller /dev/usb0:
addr 01: 1022:0000 AMD, EHCI root hub
high speed, self powered, config 1, rev 1.00
driver: uhub0
Controller /dev/usb1:
addr 01: 1022:0000 AMD, OHCI root hub
full speed, self powered, config 1, rev 1.00
driver: uhub1
10:07:30 root@alix $ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
index 6 priority 0 llprio 3
groups: lo
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x6
inet 127.0.0.1 netmask 0xff000000
vr0: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu
1500
lladdr 00:0d:b9:2b:62:c8
index 1 priority 0 llprio 3
trunk: trunkdev trunk0
media: Ethernet autoselect (10baseT half-duplex)
status: active
vr1: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:0d:b9:2b:62:c9
index 2 priority 0 llprio 3
media: Ethernet autoselect (none)
status: no carrier
vr2: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu
1500
lladdr 00:0d:b9:2b:62:c8
index 3 priority 0 llprio 3
trunk: trunkdev trunk0
media: Ethernet autoselect (none)
status: no carrier
athn0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
lladdr 30:14:4a:15:ba:bb
index 4 priority 4 llprio 3
groups: wlan
media: IEEE802.11 autoselect hostap (autoselect mode 11n hostap)
status: active
ieee80211: nwid symacx chan 3 bssid 30:14:4a:15:ba:bb -84dBm wpakey
wpaprotos wpa2 wpaakms psk wpaciphers ccmp wpagroupcipher ccmp
enc0: flags=0<>
index 5 priority 0 llprio 3
groups: enc
status: active
bridge1: flags=41<UP,RUNNING>
index 7 llprio 3
groups: bridge
priority 32768 hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp
trunk0 flags=3<LEARNING,DISCOVER>
port 8 ifpriority 0 ifcost 0
athn0 flags=3<LEARNING,DISCOVER>
port 4 ifpriority 0 ifcost 0
trunk0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:0d:b9:2b:62:c8
index 8 priority 0 llprio 3
trunk: trunkproto loadbalance
vr2 port
vr0 port master,active
groups: trunk egress
media: Ethernet autoselect
status: active
inet 192.168.1.17 netmask 0xffffff00 broadcast 192.168.1.255
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33172
index 9 priority 0 llprio 3
groups: pflog
10:07:31 root@alix $
10:08:15 root@alix $ cat /etc/sysctl.conf
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
10:08:15 root@alix $
10:08:56 root@alix $ pfctl -sr
anchor "ftp-proxy/*" all
match on trunk0 all scrub (max-mss 1440)
block drop log all
pass in on trunk0 all flags S/SA
pass out all flags S/SA
pass log proto icmp all
pass log proto ipv6-icmp all
block drop quick from <blocked> to any
block drop quick from <dns4hells> to <dest_blocked>
pass in log quick on athn0 inet proto tcp from any to any port = 21 flags S/SA
divert-to 127.0.0.1 port 8021
pass out inet proto tcp from (self) to any port = 21 flags S/SA
pass in log on trunk0 inet proto udp from 192.168.1.3 to 192.168.1.255 port =
111
pass in log on trunk0 inet proto udp from any to 255.255.255.255 port = 67
pass in log on athn0 inet proto tcp from any to x.x.x.x flags S/SA
pass in log on athn0 inet proto tcp from 192.168.1.0/24 to any port = 443 flags
S/SA
pass in log on athn0 proto tcp from any os "OpenBSD" to any port = 22 flags S/SA
pass in log on wlan inet proto udp from any to 255.255.255.255 port = 67
pass in log on athn0 inet proto udp from any to 192.168.1.4 port = 53
pass in log on athn0 inet proto udp from any to 192.168.1.17 port = 123
pass in log on trunk0 inet proto udp from any to 255.255.255.255 port = 67
pass in log on athn0 inet proto udp from 192.168.1.0/24 to ! 192.168.1.17 port
= 123 rdr-to 192.168.1.17
pass in log on athn0 inet proto udp from 192.168.1.0/24 to any port = 3478
pass in log on athn0 all flags S/SA
10:09:00 root@alix $
--
Olivier Cherrier
Phone: +352691570680
mailto:[email protected]