MagicDetector: A Precise and Scalable Static Deadlock Detector for C/C++ Programs

被引:0
|
作者
Huaxiong Cao
Naijie Gu
Yunkai Du
机构
[1] University of Science and Technology of China,The Department of Computer Science and Technology
[2] Anhui Province Key Laboratory of Computing and Communication Software,Institute of Advanced Technology
[3] University of Science and Technology of China,undefined
关键词
Static deadlock detection; Function inlining; Function summary; Symbolic execution; Execution traces; Petri net;
D O I
暂无
中图分类号
学科分类号
摘要
Existing static deadlock detectors suffer from either lack of precise interprocedural path- and context-sensitive analysis or lack of scalability. In addition, they only take a few of synchronous events into account and suffer from the lack of a united method to handle different synchronization events. To address these problems, we first present a static interprocedural analysis algorithm, named mixed procedure inlining and summary-based analysis (MPISBA), to produce feasible execution traces in C/C++ programs. The functions which call function pointers or virtual functions are considered as inlining functions to figure out callees in different context. Path-sensitive symbolic execution is also used by MPISBA to track synchronization events in different program paths guarded by path conditions. In order to do interprocedural context-sensitive analysis and avoid function re-analysis, the proposed algorithm generates a summary for each function and applies the summary at the function’s call sites. Based on feasible execution traces in program, a translation algorithm called generic synchronization event translation is proposed to translate different synchronization events into unified Petri nets. A prototype detector named MagicDetector is implemented for these procedures. A suite of open-source and large-scale softwares are used to validate MagicDetector, and comparisons are made among JDAE, Magiclock, DADCP and MagicDetector. Experimental results demonstrate that MagicDetector scales well to programs with 2M lines of codes and is more precise than previous detectors, finding more real deadlocks and reporting less false positives.
引用
收藏
页码:5149 / 5167
页数:18
相关论文
共 50 条
  • [21] Precise and efficient static array bound checking for large embedded C programs
    Venet, A
    Brat, G
    ACM SIGPLAN NOTICES, 2004, 39 (06) : 231 - 242
  • [22] LAZY EVALUATION OF C++ STATIC CONSTRUCTORS
    SABATELLA, M
    SIGPLAN NOTICES, 1992, 27 (06): : 29 - 36
  • [23] CADNA-C: A version of CADNA for use with C or C++ programs
    Lamotte J.-L.
    Chesneaux J.-M.
    Jézéquel F.
    Computer Physics Communications, 2010, 181 (11) : 1925 - 1926
  • [24] FULLY STATIC DIMENSIONAL ANALYSIS WITH C++
    UMRIGAR, ZD
    SIGPLAN NOTICES, 1994, 29 (09): : 135 - 139
  • [25] MAKING A CASE FOR ANIMATING C++ PROGRAMS
    WEST, A
    DR DOBBS JOURNAL, 1994, 19 (11): : 54 - &
  • [26] A study of the allocation behavior of C++ programs
    Chang, JM
    Lee, WH
    Srisa-an, W
    JOURNAL OF SYSTEMS AND SOFTWARE, 2001, 57 (02) : 107 - 118
  • [27] An automatic defect detection for C++ programs
    Sarala, S
    Valli, S
    Advanced Reliability Modeling, 2004, : 419 - 426
  • [28] A toolset for maintaining hybrid C++ programs
    Linos, PK
    Courtois, V
    JOURNAL OF SOFTWARE MAINTENANCE-RESEARCH AND PRACTICE, 1996, 8 (06): : 389 - 419
  • [29] Methods and programs in C++ for eigenvalue problems
    Marcu, V
    INES'97 : 1997 IEEE INTERNATIONAL CONFERENCE ON INTELLIGENT ENGINEERING SYSTEMS, PROCEEDINGS, 1997, : 475 - 478
  • [30] MLPACK: A Scalable C++ Machine Learning Library
    Curtin, Ryan R.
    Cline, James R.
    Slagle, N. P.
    March, William B.
    Ram, Parikshit
    Mehta, Nishant A.
    Gray, Alexander G.
    JOURNAL OF MACHINE LEARNING RESEARCH, 2013, 14 : 801 - 805