more robust deadlock detection
authorNikodemus Siivola <nikodemus@random-state.net>
Mon, 28 Nov 2011 17:45:16 +0000 (19:45 +0200)
committerNikodemus Siivola <nikodemus@random-state.net>
Mon, 5 Dec 2011 08:44:44 +0000 (10:44 +0200)
commit1d238a6b36387151202940a95b7cec7ad7d14e9b
treed39bd227622d35873d4d4615486d949d5736c9b1
parent51da9b6600daac4d8280332f5e2d439cae5e6336
more robust deadlock detection

 Lock around building the deadlock chain using WITH-CAS-LOCK after the
 tentative deadlock has been detected, and break the deadlock chain before
 signaling the error.

 This means that a single deadlock is reported only in a single thread.

 Fixes occasional failures of deadlock-detection.1 due to a bogus vicious
 metacircle. (Two threads detecting the same deadlock, then racing to report
 the error detected as another deadlock, the reporting of which in turn looked
 like a metacircle to CLOS if PRINT-OBJECT didn't yet have the right method in
 cache.)
NEWS
src/code/target-thread.lisp
tests/threads.pure.lisp