https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275106
Bug ID: 275106
Summary: [regression] ng_ksocket(4) produces kernel panic
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Keywords: crash, regression
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected], [email protected]
Let's start ngctl without arguments (interactive mode) and run the following
commands to create ng_ksocket(4) instance listening tcp/9 port and connected to
ng_hole(4) to implement TCP "discard" service for demonstration:
mkpeer hole dummy dummy
name .:dummy hole
mkpeer hole: ksocket hohook inet/stream/tcp
name hole:hohook kso
# setsockopt(SOL_SOCKET, SO_REUSEPORT, 1)
msg kso: setopt { level=0xffff name=0x0200 value = [1] }
msg kso: bind inet/0.0.0.0:9
msg kso: listen 1
msg kso: accept
For FreeBSD releases before 12.0, it works: one can do "telnet localhost 9" to
make connection to the port. Also ngctl command "shutdown kso:" works just fine
thereafter.
For FreeBSD versions after 12.0-RELEASE, "shutdown kso:" works if we run it
before "msg kso: listen 1". After that stage, "shutdown kso:" produces instant
panic:
Fatal trap 12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0x18
fault code = supervisor read data, page not present
instruction pointer = 0x20:0xffffffff80b26298
stack pointer = 0x28:0xfffffe00085ff9c0
frame pointer = 0x28:0xfffffe00085ffa00
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 = 730 (ngctl)
rdi: 0000000000000000 rsi: fffffe00099651e0 rdx: 0000000000000000
rcx: 00000000000003aa r8: 0000000000000001 r9: 0000000000010000
rax: fffff80004064b40 rbx: 0000000000000018 rbp: fffffe00085ffa00
r10: 0000000000000001 r11: 0000000000010000 r12: 00000000000003aa
r13: 0000000000000000 r14: fffff8000352c400 r15: ffffffff823256a5
trap number = 12
panic: page fault
cpuid = 0
time = 1700061288
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00085ff780
vpanic() at vpanic+0x150/frame 0xfffffe00085ff7d0
panic() at panic+0x43/frame 0xfffffe00085ff830
trap_fatal() at trap_fatal+0x40a/frame 0xfffffe00085ff890
trap_pfault() at trap_pfault+0xae/frame 0xfffffe00085ff8f0
calltrap() at calltrap+0x8/frame 0xfffffe00085ff8f0
--- trap 0xc, rip = 0xffffffff80b26298, rsp = 0xfffffe00085ff9c0, rbp =
0xfffffe00085ffa00 ---
__mtx_lock_flags() at __mtx_lock_flags+0x48/frame 0xfffffe00085ffa00
ng_ksocket_shutdown() at ng_ksocket_shutdown+0x39/frame 0xfffffe00085ffa20
ng_rmnode() at ng_rmnode+0x188/frame 0xfffffe00085ffa50
ng_apply_item() at ng_apply_item+0x4fb/frame 0xfffffe00085ffae0
ng_snd_item() at ng_snd_item+0x2cc/frame 0xfffffe00085ffb20
ngc_send() at ngc_send+0x1b3/frame 0xfffffe00085ffbc0
sosend_generic() at sosend_generic+0x5fe/frame 0xfffffe00085ffc70
sousrsend() at sousrsend+0x79/frame 0xfffffe00085ffcd0
kern_sendit() at kern_sendit+0x1c0/frame 0xfffffe00085ffd60
sendit() at sendit+0xb7/frame 0xfffffe00085ffdb0
sys_sendto() at sys_sendto+0x4d/frame 0xfffffe00085ffe00
amd64_syscall() at amd64_syscall+0x139/frame 0xfffffe00085fff30
fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe00085fff30
--- syscall (133, FreeBSD ELF64, sendto), rip = 0x556e6b62ffa, rsp =
0x556e4385f98, rbp = 0x556e4385fe0 ---
KDB: enter: panic
[ thread pid 730 tid 100070 ]
Stopped at kdb_enter+0x32: movq $0,0xde93a3(%rip)
db>
I got this panic using somewhat old 14.0-CURRENT system running in my bhyve.
This bug makes it impossible running net/mpd5 as PPP over TCP server as mpd5
uses ng_ksocket.
--
You are receiving this mail because:
You are the assignee for the bug.