Partial Orders for Precise and Efficient Dynamic Deadlock Prediction
For developers of concurrent programs, this provides a precise and efficient dynamic analysis tool to detect true deadlocks without false alarms.
The paper addresses false positives in dynamic deadlock prediction by introducing partial orders (TRW and a weakened variant) that eliminate spurious deadlock patterns. The method is proven sound (no false positives) and the weakened variant is complete (no false negatives), with efficient computation and identical results on benchmarks.
Deadlocks are a major source of bugs in concurrent programs. They are hard to predict, because they may only occur under specific scheduling conditions. Dynamic analysis attempts to identify potential deadlocks by examining a single execution trace of the program. A standard approach involves monitoring sequences of lock acquisitions in each thread, with the goal of identifying deadlock patterns. A deadlock pattern is characterized by a cyclic chain of lock acquisitions, where each lock is held by one thread while being requested by the next. However, it is well known that not all deadlock patterns identified in this way correspond to true deadlocks, as they may be impossible to manifest under any schedule. We tackle this deficiency by proposing a new method based on partial orders to eliminate false positives: lock acquisitions must be unordered under a given partial order, and not preceded by other deadlock patterns. We prove soundness (no falsely predicted deadlocks) for the novel TRW partial order, and completeness (no deadlocks missed) for a slightly weakened variant of TRW. Both partial orders can be computed efficiently and report the same deadlocks for an extensive benchmark suite.