[Bug 275106] [regression] ng_ksocket(4) produces kernel panic
Date: Wed, 15 Nov 2023 15:38:29 UTC
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: bugs@FreeBSD.org Reporter: eugen@freebsd.org CC: afedorov@FreeBSD.org, glebius@FreeBSD.org 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.