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:
parent
1e50c6d185
commit
9bace42dc4
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=21762
1 changed files with 45 additions and 0 deletions
|
@ -4434,6 +4434,51 @@ kern.timecounter.hardware: TSC -> 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>
|
||||
|
||||
|
|
Loading…
Reference in a new issue