Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
WITNESS(4)	       FreeBSD Kernel Interfaces Manual		    WITNESS(4)

     witness --	lock validation	facility

     The witness module	keeps track of the locks acquired and released by each
     thread.  It also keeps track of the order in which	locks are acquired
     with respect to each other.  Each time a lock is acquired,	witness	uses
     these two lists to	verify that a lock is not being	acquired in the	wrong
     order.  If	a lock order violation is detected, then a message is printed
     to	the kernel console detailing the locks involved	and the	locations in

     The witness code also checks various other	conditions such	as verifying
     that one does not recurse on a non-recursive lock,	or attempt an upgrade
     on	a shared lock held by another thread.  If any of these checks fail,
     then the kernel will panic.

     The behaviour of witness is controlled by the
     sysctl(8) variable.  Valid	values for it are:

	   -1	disable	witness	completely
	   0	disable	error checking
	   1	print a	message	if an error is detected
	   2	print a	message	and a stack trace if possible
	   3	like 2 but also	drop into the kernel debugger

     ddb(4), options(4), sysctl(8), mutex(9), rwlock(9)

     The witness code first appeared in	BSD/OS 5.0 and was imported from there
     into FreeBSD 5.0.	The OpenBSD port was derived from FreeBSD and first
     appeared in OpenBSD 6.2.

FreeBSD	13.0		       January 29, 2019			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help