panics in network stack in 12-current

From: Tom Uffner <tom_at_uffner.com>
Date: Tue, 25 Apr 2017 21:03:48 -0400
Since updating my -current box to 12 several months ago, I have been trying to 
pin down several elusive and probably related panics.

they always manifest a a trap out of rw_wlock_hard()

i am fairly certain that r302409 was stable, revs up through r306792 may be
stable, or perhaps I just didn't wait long enough for my system to panic. I
don't know of anything that I can reproducably poke at to trigger this.
r306807 is definitely bad, as is everything up through r309124. I haven't seen 
anything on the mailing lists or in the SVN logs that looks like it is related 
to my problem.

my hardware is an Asus M4A77TD MB, AMD Phenom 2 X6 1100T CPU (for some of
this time I had an Athlon 2 X2, but upgraded recently), and RealTek 8168
PCIe Gigabit NIC.

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #33 r306807M: 
Tue Apr 18 17:09:55 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

in revs between 306807-307125, the panics have been in flowcleaner, in more 
recent ones, they happen in arbitrary userspace processes that make heavy use
of the network.

I know I should try the latest rev to see if it went away. aside from that, 
any thoughts on how I should proceed?

Mon Apr 17 02:52:10 EDT 2017

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #32 r306821M: 
Fri Apr  7 02:11:44 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

panic: page fault

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x3b8
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff8057820d
stack pointer           = 0x28:0xfffffe046a422650
frame pointer           = 0x28:0xfffffe046a422690
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 697 (ntpd)
trap number             = 12
panic: page fault
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe046a4222b0
vpanic() at vpanic+0x186/frame 0xfffffe046a422330
panic() at panic+0x43/frame 0xfffffe046a422390
trap_fatal() at trap_fatal+0x331/frame 0xfffffe046a4223f0
trap_pfault() at trap_pfault+0x14f/frame 0xfffffe046a422430
trap() at trap+0x21e/frame 0xfffffe046a422580
calltrap() at calltrap+0x8/frame 0xfffffe046a422580
--- trap 0xc, rip = 0xffffffff8057820d, rsp = 0xfffffe046a422650, rbp = 
0xfffffe046a422690 ---
__rw_wlock_hard() at __rw_wlock_hard+0xad/frame 0xfffffe046a422690
ip_output() at ip_output+0x483/frame 0xfffffe046a4227c0
udp_send() at udp_send+0xb8f/frame 0xfffffe046a422890
sosend_dgram() at sosend_dgram+0x431/frame 0xfffffe046a422910
kern_sendit() at kern_sendit+0x178/frame 0xfffffe046a4229c0
sendit() at sendit+0x179/frame 0xfffffe046a422a10
sys_sendto() at sys_sendto+0x4d/frame 0xfffffe046a422a60
amd64_syscall() at amd64_syscall+0x391/frame 0xfffffe046a422bf0
Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe046a422bf0
--- syscall (133, FreeBSD ELF64, sys_sendto), rip = 0x8013c9cba, rsp = 
0x7fffdfffc7e8, rbp = 0x7fffdfffc830 ---


Mon Apr 17 03:19:00 EDT 2017

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #32 r306821M: 
Fri Apr  7 02:11:44 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

panic: page fault

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x3b8
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff8057820d
stack pointer           = 0x28:0xfffffe0469a0eab0
frame pointer           = 0x28:0xfffffe0469a0eaf0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 21 (flowcleaner)
trap number             = 12
Timeout initializing vt_vga
panic: page fault
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0469a0e710
vpanic() at vpanic+0x186/frame 0xfffffe0469a0e790
panic() at panic+0x43/frame 0xfffffe0469a0e7f0
trap_fatal() at trap_fatal+0x331/frame 0xfffffe0469a0e850
trap_pfault() at trap_pfault+0x14f/frame 0xfffffe0469a0e890
trap() at trap+0x21e/frame 0xfffffe0469a0e9e0
calltrap() at calltrap+0x8/frame 0xfffffe0469a0e9e0
--- trap 0xc, rip = 0xffffffff8057820d, rsp = 0xfffffe0469a0eab0, rbp = 
0xfffffe0469a0eaf0 ---
__rw_wlock_hard() at __rw_wlock_hard+0xad/frame 0xfffffe0469a0eaf0
flowtable_clean_vnet() at flowtable_clean_vnet+0x496/frame 0xfffffe0469a0eb80
flowtable_cleaner() at flowtable_cleaner+0x90/frame 0xfffffe0469a0ebb0
fork_exit() at fork_exit+0x75/frame 0xfffffe0469a0ebf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe0469a0ebf0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---



Mon Apr 17 02:25:20 EDT 2017

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #32 r306821M: 
Fri Apr  7 02:11:44 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

panic: page fault

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0x3b8
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff8057820d
stack pointer           = 0x28:0xfffffe046a4d1650
frame pointer           = 0x28:0xfffffe046a4d1690
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 974 (python2.7)
trap number             = 12
Timeout initializing vt_vga
panic: page fault
cpuid = 1
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe046a4d12b0
vpanic() at vpanic+0x186/frame 0xfffffe046a4d1330
panic() at panic+0x43/frame 0xfffffe046a4d1390
trap_fatal() at trap_fatal+0x331/frame 0xfffffe046a4d13f0
trap_pfault() at trap_pfault+0x14f/frame 0xfffffe046a4d1430
trap() at trap+0x21e/frame 0xfffffe046a4d1580
calltrap() at calltrap+0x8/frame 0xfffffe046a4d1580
--- trap 0xc, rip = 0xffffffff8057820d, rsp = 0xfffffe046a4d1650, rbp = 
0xfffffe046a4d1690 ---
__rw_wlock_hard() at __rw_wlock_hard+0xad/frame 0xfffffe046a4d1690
ip_output() at ip_output+0x483/frame 0xfffffe046a4d17c0
udp_send() at udp_send+0xb8f/frame 0xfffffe046a4d1890
sosend_dgram() at sosend_dgram+0x431/frame 0xfffffe046a4d1910
kern_sendit() at kern_sendit+0x178/frame 0xfffffe046a4d19c0
sendit() at sendit+0x179/frame 0xfffffe046a4d1a10
sys_sendto() at sys_sendto+0x4d/frame 0xfffffe046a4d1a60
amd64_syscall() at amd64_syscall+0x391/frame 0xfffffe046a4d1bf0
Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe046a4d1bf0
--- syscall (133, FreeBSD ELF64, sys_sendto), rip = 0x801397cba, rsp = 
0x7fffdf5f7618, rbp = 0x7fffdf5f7660 ---



Mon Apr 17 02:50:19 EDT 2017

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #32 r306821M: 
Fri Apr  7 02:11:44 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

panic: page fault

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x3b8
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff8057820d
stack pointer           = 0x28:0xfffffe03e63fb560
frame pointer           = 0x28:0xfffffe03e63fb5a0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 11 (swi4: clock (0))
trap number             = 12
Timeout initializing vt_vga
panic: page fault
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe03e63fb1c0
vpanic() at vpanic+0x186/frame 0xfffffe03e63fb240
panic() at panic+0x43/frame 0xfffffe03e63fb2a0
trap_fatal() at trap_fatal+0x331/frame 0xfffffe03e63fb300
trap_pfault() at trap_pfault+0x14f/frame 0xfffffe03e63fb340
trap() at trap+0x21e/frame 0xfffffe03e63fb490
calltrap() at calltrap+0x8/frame 0xfffffe03e63fb490
--- trap 0xc, rip = 0xffffffff8057820d, rsp = 0xfffffe03e63fb560, rbp = 
0xfffffe03e63fb5a0 ---
__rw_wlock_hard() at __rw_wlock_hard+0xad/frame 0xfffffe03e63fb5a0
in_lltable_lookup() at in_lltable_lookup+0xa8/frame 0xfffffe03e63fb5c0
llentry_alloc() at llentry_alloc+0x3c/frame 0xfffffe03e63fb610
flowtable_lookup_common() at flowtable_lookup_common+0x2d1/frame 
0xfffffe03e63fb6f0
flowtable_lookup() at flowtable_lookup+0x9c/frame 0xfffffe03e63fb740
ip_output() at ip_output+0xaa/frame 0xfffffe03e63fb870
tcp_output() at tcp_output+0x175e/frame 0xfffffe03e63fba00
tcp_timer_rexmt() at tcp_timer_rexmt+0x442/frame 0xfffffe03e63fba30
softclock_call_cc() at softclock_call_cc+0x14a/frame 0xfffffe03e63fbaf0
softclock() at softclock+0x6d/frame 0xfffffe03e63fbb20
intr_event_execute_handlers() at intr_event_execute_handlers+0xbc/frame 
0xfffffe03e63fbb60
ithread_loop() at ithread_loop+0xa6/frame 0xfffffe03e63fbbb0
fork_exit() at fork_exit+0x75/frame 0xfffffe03e63fbbf0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe03e63fbbf0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---




Sat Apr 22 18:06:14 EDT 2017

FreeBSD discordia.uffner.com 12.0-CURRENT FreeBSD 12.0-CURRENT #33 r306807M: 
Tue Apr 18 17:09:55 EDT 2017 
tom_at_discordia.uffner.com:/usr/obj/usr/src/sys/DISCORDIA  amd64

panic: page fault

GNU gdb (GDB) 7.11.1 [GDB v7.11.1 for FreeBSD]
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd11.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /boot/kernel/kernel...Reading symbols from 
/usr/lib/debug//boot/kernel/kernel.debug...done.
done.

Unread portion of the kernel message buffer:

Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address   = 0x3b8
fault code              = supervisor read data, page not present
instruction pointer     = 0x20:0xffffffff8057820d
stack pointer           = 0x28:0xfffffe046a7804b0
frame pointer           = 0x28:0xfffffe046a7804f0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                         = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 4643 (DNS Resolver #749)
trap number             = 12
Timeout initializing vt_vga
panic: page fault
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe046a780110
vpanic() at vpanic+0x186/frame 0xfffffe046a780190
panic() at panic+0x43/frame 0xfffffe046a7801f0
trap_fatal() at trap_fatal+0x331/frame 0xfffffe046a780250
trap_pfault() at trap_pfault+0x14f/frame 0xfffffe046a780290
trap() at trap+0x21e/frame 0xfffffe046a7803e0
calltrap() at calltrap+0x8/frame 0xfffffe046a7803e0
--- trap 0xc, rip = 0xffffffff8057820d, rsp = 0xfffffe046a7804b0, rbp = 
0xfffffe046a7804f0 ---
__rw_wlock_hard() at __rw_wlock_hard+0xad/frame 0xfffffe046a7804f0
in_lltable_lookup() at in_lltable_lookup+0xa8/frame 0xfffffe046a780510
llentry_alloc() at llentry_alloc+0x3c/frame 0xfffffe046a780560
flowtable_lookup_common() at flowtable_lookup_common+0x2d1/frame 
0xfffffe046a780640
flowtable_lookup() at flowtable_lookup+0x9c/frame 0xfffffe046a780690
ip_output() at ip_output+0xaa/frame 0xfffffe046a7807c0
udp_send() at udp_send+0xb8f/frame 0xfffffe046a780890
sosend_dgram() at sosend_dgram+0x431/frame 0xfffffe046a780910
kern_sendit() at kern_sendit+0x178/frame 0xfffffe046a7809c0
sendit() at sendit+0x179/frame 0xfffffe046a780a10
sys_sendto() at sys_sendto+0x4d/frame 0xfffffe046a780a60
amd64_syscall() at amd64_syscall+0x391/frame 0xfffffe046a780bf0
Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe046a780bf0
--- syscall (133, FreeBSD ELF64, sys_sendto), rip = 0x8020d5cba, rsp = 
0x7fffd9364728, rbp = 0x7fffd9364770 ---
Received on Tue Apr 25 2017 - 23:26:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:11 UTC