|
This article is cited in 1 scientific paper (total in 1 paper)
Deadlock detection using static analysis
S. A. Polyakov, A. E. Borodin Ivannikov Institute for System Programming of the Russian Academy of Sciences
Abstract:
The paper describes an extension to summary based static program analysis to find deadlock errors. Summary based analysis is a popular approach aimed at the detection of bugs in programs due to its high performance and scalability. At the same time, the implementation of deadlock detectors in such an analysis is nontrivial, because there is no information about the locks held higher in the call stack during the process of function intraprocedural analysis. A lock graph, which is built during the main analysis, is used to model the semantics of multithreaded programs. Lock graph is a modification of call graph which contains additional information about held locks. After the lock graph is built, the deadlock detector is launched. Both the construction of the lock graph and the deadlock detection algorithm do not require significant processor time. On the performed measurements, the total analysis time increased by 4%. Based on the results of the analysis of 8 open source projects in C/C++/Java with a total size of more than 14 million lines of code, the proposed algorithm showed a high level of true positives. The described algorithms were implemented in the Svace tool.
Keywords:
static analysis, symbolic execution, concurrency, deadlock freedom.
Citation:
S. A. Polyakov, A. E. Borodin, “Deadlock detection using static analysis”, Proceedings of ISP RAS, 32:5 (2020), 21–34
Linking options:
https://www.mathnet.ru/eng/tisp541 https://www.mathnet.ru/eng/tisp/v32/i5/p21
|
Statistics & downloads: |
Abstract page: | 134 | Full-text PDF : | 86 | References: | 21 |
|