Beyond Per-Thread Lock Sets: Multi-Thread Critical Sections and Dynamic Deadlock Prediction
Martin Sulzmann
TL;DR
This work addresses the limitations of per-thread lock-sets in dynamic deadlock prediction by exposing cross-thread critical sections. It develops a trace-based characterization of multi-thread critical sections and a family of partial-order lock-set constructions (including $TO$, $LW$, and $RO$) that under-approximate the cross-thread protection while satisfying the must-happen-before criteria. These constructions yield deadlock patterns that are sound (no false positives) and more complete (fewer false negatives), and they are integrated into the SPDOffline predictor with no measurable performance penalty on standard benchmarks. The result is a practically feasible, more precise deadlock prediction framework for multi-threaded programs, validated on a large benchmark suite and via C-program traces.
Abstract
Lock sets are commonly used for dynamic analysis of deadlocks. The standard per-thread lock set construction only considers locks acquired in the same thread, but is unaware of locks acquired in another thread. This leads to false positives and false negatives. The underlying issue is that the commonly used notion of a critical section on which the lock set construction relies ignores events from other threads. We give a trace-based characterization of critical sections that drops this restriction. Critical sections are no longer restricted to a single thread and can cover multiple threads. Such forms of critical sections exist, are natural, and correct the standard formulation. We show how to soundly approximate the trace-based characterization via partial order relations. Thus, we obtain an improved lock set construction that can still be efficiently computed and allows us to remove false positives reported by the DIRK deadlock predictor and remove false negatives by extending the SPDOffline deadlock predictor. We integrate various lock set constructions with increased precision in an extension of SPDOffline. Our extensions remain sound (no false positives) but are more complete (fewer false negatives) w.r.t. SPDOffline. For an extensive standard benchmark suite we can also show that the performance is not affected.
