[Bug 227749] post-panic assertion failed: panic: Assertion (*xp & ~LK_EXCLUSIVE_SPINNERS) == LK_SHARERS_LOCK(1) failed at /usr/src/sys/kern/kern_lock.c:541

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Apr 24 17:23:08 UTC 2018


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=227749

            Bug ID: 227749
           Summary: post-panic assertion failed: panic: Assertion (*xp &
                    ~LK_EXCLUSIVE_SPINNERS) == LK_SHARERS_LOCK(1) failed
                    at /usr/src/sys/kern/kern_lock.c:541
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: bugs at FreeBSD.org
          Reporter: jtl at freebsd.org

Running an INVARIANTS kernel, we saw a kernel panic (in tcp_output(), if it
matters). Then, we tripped over this assertion. Due to the double-fault, the
system rebooted without a coredump.

panic: tcp_output: len <= tso_segsz
cpuid = 16
time = 1524314516
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0c1bee51f0
vpanic() at vpanic+0x18d/frame 0xfffffe0c1bee5250
vpanic() at vpanic/frame 0xfffffe0c1bee52d0
tcp_output() at tcp_output+0x1f33/frame 0xfffffe0c1bee5490
tcp_do_segment() at tcp_do_segment+0x23aa/frame 0xfffffe0c1bee5580
tcp_input_with_port() at tcp_input_with_port+0xed7/frame 0xfffffe0c1bee56d0
tcp_input() at tcp_input+0xb/frame 0xfffffe0c1bee56e0
ip_input() at ip_input+0x33c/frame 0xfffffe0c1bee5740
netisr_dispatch_src() at netisr_dispatch_src+0x83/frame 0xfffffe0c1bee57a0
ether_demux() at ether_demux+0x162/frame 0xfffffe0c1bee57d0
ether_nh_input() at ether_nh_input+0x346/frame 0xfffffe0c1bee5810
netisr_dispatch_src() at netisr_dispatch_src+0x83/frame 0xfffffe0c1bee5870
ether_input() at ether_input+0x62/frame 0xfffffe0c1bee58a0
tcp_lro_flush() at tcp_lro_flush+0x217/frame 0xfffffe0c1bee58c0
tcp_lro_flush_all() at tcp_lro_flush_all+0x13b/frame 0xfffffe0c1bee5900
service_iq() at service_iq+0x7d1/frame 0xfffffe0c1bee59c0
t4_intr() at t4_intr+0x30/frame 0xfffffe0c1bee59e0
intr_event_execute_handlers() at intr_event_execute_handlers+0x99/frame
0xfffffe0c1bee5a20
ithread_loop() at ithread_loop+0xb7/frame 0xfffffe0c1bee5a70
fork_exit() at fork_exit+0x84/frame 0xfffffe0c1bee5ab0
fork_trampoline() at fork_trampoline+0xe/frame 0xfffffe0c1bee5ab0
--- trap 0, rip = 0, rsp = 0, rbp = 0 ---
panic: Assertion (*xp & ~LK_EXCLUSIVE_SPINNERS) == LK_SHARERS_LOCK(1) failed at
/usr/src/sys/kern/kern_lock.c:541
cpuid = 16
time = 1524314516
Uptime: 19m34s


Someone needs to modify this code to do the right thing in the post-panic
world. For what its worth, ignoring the assert lets a coredump finish
correctly, and is probably the "right thing" to do in this case.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list