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 条
  • [31] Algorithm 871: A C/C++ precompiler for autogeneration of multiprecision programs
    Schreppers, Walter
    Cuyt, Annie
    ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE, 2008, 34 (01):
  • [32] QUANTIFYING BEHAVIORAL-DIFFERENCES BETWEEN C AND C++ PROGRAMS
    CALDER, B
    GRUNWALD, D
    ZORN, B
    JOURNAL OF PROGRAMMING LANGUAGES, 1994, 2 (04): : 313 - 351
  • [33] Automatic Defect Repair and Validation Approach for C/C++ Programs
    Zhou F.-S.
    Wang L.-Z.
    Li X.-D.
    Ruan Jian Xue Bao/Journal of Software, 2019, 30 (05): : 1243 - 1255
  • [34] Scalable Verification Framework for C Programs
    Chen, Guang
    Wang, Dexi
    Li, Tianchi
    Zhang, Chao
    Gu, Ming
    Sun, Jiaguang
    2018 25TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC 2018), 2018, : 129 - 138
  • [35] ITS4: A static vulnerability scanner for C and C++ code
    Viega, J
    Bloch, JT
    Kohno, Y
    McGraw, G
    16TH ANNUAL COMPUTER SECURITY APPLICATIONS CONFERENCE, PROCEEDINGS, 2000, : 257 - 267
  • [36] A dynamic memory measuring tool for C++ programs
    Lee, WH
    Chang, JM
    Hasan, Y
    3RD IEEE SYMPOSIUM ON APPLICATION SPECIFIC SYSTEMS AND SOFTWARE ENGINEERING TECHNOLOGY, PROCEEDINGS, 2000, : 155 - 159
  • [37] Compiling C++ programs to Java']Java bytecode
    Hu, GZ
    Gadapa, A
    SIXTH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERNG, ARTIFICIAL INTELLIGENCE, NETWORKING AND PARALLEL/DISTRIBUTED COMPUTING AND FIRST AICS INTERNATIONAL WORKSHOP ON SELF-ASSEMBLING WIRELESS NETWORKS, PROCEEDINGS, 2005, : 56 - 61
  • [38] Method of detecting useless objects of C++ programs
    Zhang, Weifeng
    Xu, Baowen
    Xiaoxing Weixing Jisuanji Xitong/Mini-Micro Systems, 2000, 21 (05): : 512 - 515
  • [39] A tool to automatically detect defects in C++ programs
    Sarala, S
    Valli, S
    INTELLIGENT INFORMATION TECHNOLOGY, PROCEEDINGS, 2004, 3356 : 302 - 314
  • [40] Measuring the intensity of object coupling in C++ programs
    Ma, CS
    Chang, CK
    Cleland-Huang, J
    25TH ANNUAL INTERNATIONAL COMPUTER SOFTWARE & APPLICATIONS CONFERENCE, 2001, : 538 - 543