Re: Panic and LOR

From: Kip Macy <kip.macy_at_gmail.com>
Date: Sun, 9 Sep 2007 13:11:02 -0700
This is a known issue. sx locks aren't for use in the I/O path. The
firewall maintainer chooses to use them. This might be avoidable in
the future if we can establish a mechanism for preventing pfil from
being unloaded without protecting it with an rwlock.

 -Kip



On 9/9/07, Pete Curry <mail_at_petecurry.net> wrote:
> Hi,
>
> I've been getting a very reproducable panic in -CURRENT with moderate
> network traffic (including same-machine traffic, and especially
> with ssh), and a LOR on boot.
>
> kiwi# uname -a
> FreeBSD kiwi.petecurry.net 7.0-CURRENT FreeBSD 7.0-CURRENT #1: Sun
> Sep  9 11:01:03 CDT 2007 root_at_:/usr/obj/usr/src/sys/KIWIKERN  amd64
>
> The source is from about 10:00 this morning, and my kernel config
> and dmesg output is attached. It's been happening for at least a
> few weeks, about as long as I've been running -CURRENT and had this
> machine.
>
> The LOR message is:
> Sep  9 11:16:00 kiwi kernel: lock order reversal: (sleepable after non-sleepable)
> Sep  9 11:16:00 kiwi kernel: 1st 0xffffffff807781a8 PFil hook read/write mutex (PFil hook read/write mutex) _at_ /usr/src/sys/net/pfil.c:73
> Sep  9 11:16:00 kiwi kernel: 2nd 0xffffffffb1e2f840 ipf filter load/unload mutex (ipf filter load/unload mutex) _at_ /usr/src/sys/modules/ipfilter/../../contrib/ipfilter/netinet/fil.c:2419
> Sep  9 11:16:00 kiwi kernel: KDB: stack backtrace:
> Sep  9 11:16:00 kiwi kernel: db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
> Sep  9 11:16:00 kiwi kernel: witness_checkorder() at witness_checkorder+0x5f8
> Sep  9 11:16:00 kiwi kernel: _sx_slock() at _sx_slock+0x51
> Sep  9 11:16:00 kiwi kernel: fr_check() at fr_check+0x61
> Sep  9 11:16:00 kiwi kernel: pfil_run_hooks() at pfil_run_hooks+0xc0
> Sep  9 11:16:00 kiwi kernel: ip_output() at ip_output+0x37d
> Sep  9 11:16:00 kiwi kernel: udp_send() at udp_send+0x350
> Sep  9 11:16:00 kiwi kernel: sosend_dgram() at sosend_dgram+0x21a
> Sep  9 11:16:00 kiwi kernel: kern_sendit() at kern_sendit+0x122
> Sep  9 11:16:00 kiwi kernel: sendit() at sendit+0xdc
> Sep  9 11:16:00 kiwi kernel: sendto() at sendto+0x4d
> Sep  9 11:16:00 kiwi kernel: syscall() at syscall+0x1ce
> Sep  9 11:16:00 kiwi kernel: Xfast_syscall() at Xfast_syscall+0xab
> Sep  9 11:16:00 kiwi kernel: --- syscall (133, FreeBSD ELF64, sendto), rip = 0x800c57f6c, rsp = 0x7fffffffec18, rbp = 0x14705c8 ---
>
> The panic and backtrace messages are (hand-copied, hopefully accurate):
> panic: Trying sleep, but thread marked as sleeping prohibited
> cpuid = 0
> KDB: enter: panic
> [thread pid 20 tid 100012 ]
> Stopped at      kdb_enter+0x31: leave
> db> bt
> Tracing pid 20 tid 100012 td 0xffffff0001102000
> kdb_enter() at kdb_enter+0x31
> panic() at panic+0x173
> sleepq_add() at sleepq_add_0x2c1
> _sx_xlock_hard() at _sx_xlock_kard+0x19d
> _sx_xlock() at _sx_xlock+0xb8
> fr_check() at fr_check+0xc05
> pfil_run_hooks() at pfil_run_hooks+0xc0
> ip_output() at ip_output+037d
> tcp_output() at tcp_output+0xad6
> tcp_timer_delack+0xcc
> softclock() at softclock+0x297
> ithread_loop() at ithread_loop+0xe0
> fork_exit() at fork_exit+0x12a
> fork_trampoline() at fork_tramoline+0xe
> --- trap 0, rip= 0, rsp = 0xffffffffabeb1d30, rbp = 0 ---
> db>
>
> I've got a crash dump, but kgdb reports:
> kiwi# cd /usr/obj/usr/src/sys/KIWIKERN/
> kiwi# kgdb kernel.debug /var/crash/vmcore.0
> kgdb: kvm_read: invalid address (0x6461657268742074)
> kgdb: kvm_read: invalid address (0x7320676e69797254)
> [GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "amd64-marcel-freebsd".
> Cannot access memory at address 0x1464
> (kgdb) bt
> #0  0x0000000000000000 in ?? ()
> Cannot access memory at address 0x0
> (kgdb)
>
> Please let me know what other information that I can provide or
> anything that I can do to help with this issue.
>
> Thanks,
> - Pete Curry
>
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>
>
Received on Sun Sep 09 2007 - 18:11:03 UTC

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