Affiliation:
1. Aarhus University, Denmark
Abstract
Writing concurrent programs is highly error-prone due to the nondeterminism in interprocess communication. The most reliable indicators of errors in concurrency are
data races
, which are accesses to a shared resource that can be executed concurrently. We study the problem of predicting data races in lock-based concurrent programs. The input consists of a concurrent trace
t
, and the task is to determine all pairs of events of
t
that constitute a data race. The problem lies at the heart of concurrent verification and has been extensively studied for over three decades. However, existing polynomial-time sound techniques are highly incomplete and can miss simple races.
In this work we develop
M
2: a new polynomial-time algorithm for this problem, which has no false positives. In addition, our algorithm is
complete
for input traces that consist of two processes, i.e., it provably detects
all
races in the trace. We also develop sufficient criteria for detecting completeness
dynamically
in cases of more than two processes. We make an experimental evaluation of our algorithm on a challenging set of benchmarks taken from recent literature on the topic. Our algorithm soundly reports
hundreds
of real races, many of which are missed by existing methods. In addition, using our dynamic completeness criteria,
M
2 concludes that it has detected
all
races in the benchmark set, hence the reports are both sound and complete. Finally, its running times are comparable, and often smaller than the theoretically fastest, yet highly incomplete, existing methods. To our knowledge,
M
2 is the first sound algorithm that achieves such a level of performance on both running time and completeness of the reported races.
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
26 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Accurate Data Race Prediction in the Linux Kernel through Sparse Fourier Learning;Proceedings of the ACM on Programming Languages;2024-04-29
2. CSSTs: A Dynamic Data Structure for Partial Orders in Concurrent Execution Analysis;Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 3;2024-04-27
3. PredRacer: Predictively Detecting Data Races in Android Applications;2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER);2024-03-12
4. Reorder Pointer Flow in Sound Concurrency Bug Prediction;Proceedings of the IEEE/ACM 46th International Conference on Software Engineering;2024-02-06
5. Predictive Monitoring against Pattern Regular Languages;Proceedings of the ACM on Programming Languages;2024-01-05