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 条
  • [41] A study of dynamic memory management in C++ programs
    Lee, WH
    Chang, M
    COMPUTER LANGUAGES SYSTEMS & STRUCTURES, 2002, 28 (03) : 237 - 272
  • [42] Automatic design patterns identification of C++ programs
    Espinoza, FAC
    Esquer, GN
    Cansino, JS
    EURASIA-ICT 2002: INFORMATION AND COMMUNICATION TECHNOLOGY, PROCEEDINGS, 2002, 2510 : 816 - 823
  • [43] PRECISE COMPUTATION USING RANGE ARITHMETIC, VIA C++
    ABERTH, O
    SCHAEFER, MJ
    ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE, 1992, 18 (04): : 481 - 491
  • [44] Runtime Countermeasures for Code Injection Attacks Against C and C++ Programs
    Younan, Yves
    Joosen, Wouter
    Piessens, Frank
    ACM COMPUTING SURVEYS, 2012, 44 (03)
  • [45] Contrasting branch characteristics and branch predictor performance of C++ and C programs
    Tang, DCD
    Maynard, AMG
    John, LK
    1999 IEEE INTERNATIONAL PERFORMANCE, COMPUTING AND COMMUNICATIONS CONFERENCE, 1999, : 275 - 283
  • [46] 使用Visual Leak Detector检测c/c++程序内存泄漏
    杨磊
    汪仁煌
    刘洪江
    黄颖怡
    电脑与电信, 2008, (07) : 81 - 83
  • [47] Static Analysis for Ada, C/C++ and Python: Different Languages, Different Needs
    Martignano M.
    Ada User Journal, 2021, 41 (02): : 199 - 202
  • [48] A static analysis method for safe comparison functors in C++
    Babati, Bence
    Pataki, Norbert
    ANNALES MATHEMATICAE ET INFORMATICAE, 2020, 52 : 5 - 18
  • [49] Buffer Overflow Patching for C and C++ Programs: Rule-Based Approach
    Shahriar, Hossain
    Haddad, Hisham M.
    Vaidya, Ishan
    APPLIED COMPUTING REVIEW, 2013, 13 (02): : 8 - 19
  • [50] CGuard: Scalable and Precise Object Bounds Protection for C
    Kedia, Piyus
    Purandare, Rahul
    Agarwal, Udit
    Rishabh
    PROCEEDINGS OF THE 32ND ACM SIGSOFT INTERNATIONAL SYMPOSIUM ON SOFTWARE TESTING AND ANALYSIS, ISSTA 2023, 2023, : 1307 - 1318