lock order reversal: devel/dbus causes a lock order reversal when it is started.

Scot Hetzel swhetzel at gmail.com
Thu Dec 20 22:56:06 PST 2007

I'm getting the following lock order reversal when the rc.d/dbus
script is started:

lock order reversal:
 1st 0xffffff000b0ae500 kqueue (kqueue) @ kern/kern_event.c:1397
 2nd 0xffffffff80e3cac0 sleep mtxpool (sleep mtxpool) @ kern/sys_generic.c:1255
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
witness_checkorder() at witness_checkorder+0x655
_mtx_lock_flags() at _mtx_lock_flags+0x75
selrecord() at selrecord+0x86
kqueue_poll() at kqueue_poll+0xa5
poll() at poll+0x343
syscall() at syscall+0x1ca
Xfast_syscall() at Xfast_syscall+0xab
--- syscall (209, FreeBSD ELF64, poll), rip = 0x800822b0c, rsp =
0x7fffffffe658, rbp = 0 ---

FreeBSD hp010.hetzel.org 8.0-CURRENT FreeBSD 8.0-CURRENT #0: Wed Dec
19 11:27:48 CST 2007
root at hp010.hetzel.org:/usr/src/8x/sys-orig/amd64/compile/DV8135NR

# ident /sys/kern/{kern_event.c,sys_generic.c}
     $FreeBSD: src/sys/kern/kern_event.c,v 1.114 2007/12/16 06:21:19 jeff Exp $

     $FreeBSD: src/sys/kern/sys_generic.c,v 1.160 2007/12/16 06:21:19 jeff Exp $

-------------- next part --------------
# GENERIC debugging kernel
# To use this kernel, you need to add the following to
# your /boot/loader.conf
# kernel=kernel_hp_debug
# $FreeBSD$

include GENERIC

ident		DV8135NR-debug

makeoptions	DEBUG=-g		# Build kernel with gdb(1) debug symbols
makeoptions	KODIR=/boot/${KERNEL}_hp_debug

# Debugging for use in -current
options 	KDB			# Enable kernel debugger support.
options 	DDB			# Support DDB.
options 	GDB			# Support remote GDB.
options 	INVARIANTS		# Enable calls of extra sanity checking
options 	INVARIANT_SUPPORT	# Extra sanity checks of internal structures, required by INVARIANTS
options 	WITNESS			# Enable checks to detect deadlocks and cycles
options 	WITNESS_SKIPSPIN	# Don't run witness on spinlocks for speed

# This allows you to actually store this configuration file into
# the kernel binary itself, where it may be later read by saying:
#    strings -n 3 /boot/kernel/kernel | sed -n 's/^___//p' > MYKERNEL
options         INCLUDE_CONFIG_FILE     # Include this file in kernel

# SCSI Controllers
nodevice	ahc
nodevice	ahd
nodevice	amd
nodevice	hptiop
nodevice	isp
#nodevice	ispfw
nodevice	mpt
#nodevice	ncr
nodevice	sym
nodevice	trm
nodevice	adv
nodevice	adw
nodevice	aic
nodevice	bt

# SCSI peripherals

# RAID controllers interfaced to the SCSI subsystem
nodevice	amr
nodevice	arcmsr
nodevice	ciss
nodevice	dpt
nodevice	hptmv
nodevice	hptrr
nodevice	rr232x
nodevice	iir
nodevice	ips
nodevice	mly
nodevice	twa

# RAID controllers
nodevice	aac
nodevice	aacp
nodevice	ida
nodevice	mfi
nodevice	mlx
#nodevice	pst
nodevice	twe

# atkbdc0 controls both the keyboard and the PS/2 mouse

# syscons is the default console driver, resembling an SCO console

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support

# Serial (COM) ports

# Parallel port
nodevice	ppc
nodevice	ppbus
nodevice	lpt
nodevice	plip
nodevice	ppi
#nodevice	vpo
#nodevice	puc

# PCI Ethernet NICs.
nodevice	de
nodevice	em
nodevice	ixgb
nodevice	le
nodevice	txp
nodevice	vx

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!

nodevice	bce
nodevice	bfe
nodevice	bge
nodevice	dc
nodevice	fxp
nodevice	lge
nodevice	msk
nodevice	nfe
nodevice	nge
nodevice	pcn
nodevice	re

nodevice	sf
nodevice	sis
nodevice	sk
nodevice	ste
nodevice	ti
nodevice	tl
nodevice	tx
nodevice	vge
nodevice	vr
nodevice	wb
nodevice	xl

# ISA Ethernet NICs.  pccard NICs included.
nodevice	cs
nodevice	ed
nodevice	ex
nodevice	ep
nodevice	fe
nodevice	sn
nodevice	xe

# Wireless NIC cards
nodevice	wlan
nodevice	wlan_wep
nodevice	wlan_ccmp
nodevice	wlan_tkip
nodevice	wlan_amrr
nodevice	wlan_scan_ap
nodevice	wlan_scan_sta
nodevice	an
nodevice	ath
nodevice	ath_hal
nodevice	ath_rate_sample
nodevice	awi
nodevice	ral
nodevice	wi

# Pseudo devices.

# USB support

nodevice	ural
nodevice	rum

# USB Serial devices

# USB Ethernet, requires miibus
nodevice	aue
nodevice	axe
nodevice	cdce
nodevice	cue
nodevice	kue
nodevice	rue
nodevice	udav

# FireWire support

More information about the freebsd-current mailing list