Add a FAQ about lock order reversals, based on a nice explanation sent

by rwatson to freebsd-current.

PR:		docs/68595
Submitted by:	Jonathan Noack <noackj@concordiacrusaders.org>
This commit is contained in:
Murray Stokely 2004-08-02 05:26:07 +00:00
parent 1e50c6d185
commit 9bace42dc4
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=21762

View file

@ -4434,6 +4434,51 @@ kern.timecounter.hardware: TSC -&gt; i8254</screen>
channel is numbered 0, and so on.</para>
</answer>
</qandaentry>
<qandaentry>
<question id="lock-order-reversal">
<para>What is a <errorname>lock order reversal</errorname>?</para>
</question>
<answer>
<para>&a.rwatson; answered this question very succinctly on
the freebsd-current list in a thread entitled <quote><ulink
url="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=65165+0+/usr/local/www/db/text/2003/freebsd-current/20031221.freebsd-current">lock
order reversals - what do they mean?</ulink></quote></para>
<blockquote>
<attribution>&a.rwatson; on freebsd-current, December 14,
2003</attribution>
<para>These warnings are generated by Witness, a run-time lock
diagnostic system found in FreeBSD 5-CURRENT kernels (but
removed in releases). You can read more about Witness in the
&man.witness.4; man page, which talks about its capabilities. Among
other things, Witness performs run-time lock order verification
using a combination of hard coded lock orders, and run-time
detected lock orders, and generates console warnings when lock
orders are violated. The intent of this is to detect the
potential for deadlocks due to lock order violations; it's worth
observing that Witness is actually slightly conservative, and so
it's possible to get false positives. In the event that Witness
is accurately reporting a lock order problem, it's basically
saying "If you were unlucky, a deadlock would have happened
here". There are a couple of "well known" false positives,
which we need to do a better job of documenting to prevent
spurious reports. The non-well-known ones typically correspond
to bugs in newly added locking, as lock order reversals usually
get fixed pretty quickly because Witness is busy generating
warnings :-).</para>
</blockquote>
<note>
<para>See <ulink
url="http://sources.zabbadoz.net/freebsd/lor.html">Bjoern
Zeeb's lock order reversal page</ulink> for the status of
known lock order reversals.</para>
</note>
</answer>
</qandaentry>
</qandaset>
</chapter>