LOCKSMITH: Practical Static Race Detection for C

被引:74
|
作者
Pratikakis, Polyvios [1 ]
Foster, Jeffrey S. [1 ]
Hicks, Michael [1 ]
机构
[1] Univ Maryland, College Pk, MD 20742 USA
来源
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS | 2011年 / 33卷 / 01期
关键词
Languages; Verification; Reliability; Algorithms; Data race; race detection; static analysis; context sensitivity; correlation inference; sharing analysis; contextual effects; Locksmith; INFERENCE;
D O I
10.1145/1889997.1890000
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
LOCKSMITH is a static analysis tool for automatically detecting data races in C programs. In this article, we describe each of LOCKSMITH's component analyses precisely, and present systematic measurements that isolate interesting trade-offs between precision and efficiency in each analysis. Using a benchmark suite comprising stand-alone applications and Linux device drivers totaling more than 200,000 lines of code, we found that a simple no-worklist strategy yielded the most efficient interprocedural dataflow analysis; that our sharing analysis was able to determine that most locations are thread-local, and therefore need not be protected by locks; that modeling C structs and void pointers precisely is key to both precision and efficiency; and that context sensitivity yields a much more precise analysis, though with decreased scalability. Put together, our results illuminate some of the key engineering challenges in building LOCKSMITH and data race detection analyses in particular, and constraint-based program analyses in general.
引用
收藏
页数:55
相关论文
共 50 条
  • [21] ProRace: Practical Data Race Detection for Production Use
    Zhang, Tong
    Jung, Changhee
    Lee, Dongyoon
    OPERATING SYSTEMS REVIEW, 2017, 51 (02) : 149 - 162
  • [22] Practical aspects of protection against corrosion of the various elements of the locksmith and metal structures
    Maciejewski, Arkadiusz
    OCHRONA PRZED KOROZJA, 2012, 55 (07): : 314 - 316
  • [23] A Static Analysis Approach to Data Race Detection in SystemC Designs
    Moiseev, Mikhail
    Glukhikh, Mikhail
    Zakharov, Alexey
    Richter, Harald
    PROCEEDINGS OF THE 2013 IEEE 16TH INTERNATIONAL SYMPOSIUM ON DESIGN AND DIAGNOSTICS OF ELECTRONIC CIRCUITS & SYSTEMS (DDECS), 2013, : 54 - 59
  • [24] Provable GPU Data-Races in Static Race Detection
    Liew, Dennis
    Cogumbreiro, Tiago
    Lange, Julien
    ELECTRONIC PROCEEDINGS IN THEORETICAL COMPUTER SCIENCE, 2022, (356): : 36 - 45
  • [25] Types for safe locking: Static race detection for Java']Java
    Abadi, M
    Flanagan, C
    Freund, SN
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2006, 28 (02): : 207 - 255
  • [26] Static analysis for concurrent programs with applications to data race detection
    Kahlon V.
    Sankaranarayanan S.
    Gupta A.
    International Journal on Software Tools for Technology Transfer, 2013, 15 (4) : 321 - 336
  • [27] Static Data Race Detection for Concurrent Programs with Asynchronous Calls
    Kahlon, Vineet
    Sinha, Nishant
    Kruus, Erik
    Zhang, Yun
    7TH JOINT MEETING OF THE EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND THE ACM SIGSOFT SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2009, : 13 - 22
  • [28] SmallRace: Static Race Detection for Dynamic Languages - A Case on Smalltalk
    Cui, Siwei
    Gao, Yifei
    Unterguggenberger, Rainer
    Pichler, Wilfried
    Livingstone, Sean
    Huang, Jeff
    2023 IEEE/ACM 45TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, ICSE, 2023, : 1136 - 1147
  • [29] Practical AJAX Race Detection for Java']JavaScript Web Applications
    Adamsen, Christoffer Quist
    Moller, Anders
    Alimadadi, Saba
    Tip, Frank
    ESEC/FSE'18: PROCEEDINGS OF THE 2018 26TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING, 2018, : 38 - 48
  • [30] Leakchecker: Practical static memory leak detection for managed languages
    Yan, Dacong
    Xu, Guoqing
    Yang, Shengqian
    Rountev, Atanas
    Proceedings of the 12th ACM/IEEE International Symposium on Code Generation and Optimization, CGO 2014, 2014, : 87 - 97