Runtime Detection of Memory Errors with Smart Status

被引:12
|
作者
Chen, Zhe [1 ,4 ,5 ]
Wang, Chong [1 ]
Yan, Junqi [1 ]
Sui, Yulei [2 ]
Xue, Jingling [3 ]
机构
[1] Nanjing Univ Aeronaut & Astronaut, Nanjing, Jiangsu, Peoples R China
[2] Univ Technol Sydney, Sydney, NSW, Australia
[3] Univ New South Wales, Sydney, NSW, Australia
[4] East China Normal Univ, Shanghai Key Lab Trustworthy Comp, Shanghai, Peoples R China
[5] Nanjing Univ, State Key Lab Novel Software Technol, Nanjing, Jiangsu, Peoples R China
基金
中国国家自然科学基金;
关键词
memory errors; dynamic analysis; testing; error detection;
D O I
10.1145/3460319.3464807
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
C is a dominant language for implementing system software. Unfortunately, its support for low-level control of memory often leads to memory errors. Dynamic analysis tools, which have been widely used for detecting memory errors at runtime, are not yet satisfactory as they cannot deterministically and completely detect some types of memory errors, e.g., segment confusion errors, sub-object overflows, use-after-frees, and memory leaks. We propose SMATUS, short for smart status, a new dynamic analysis approach that supports comprehensive runtime detection of memory errors. The key innovation is to create and maintain a small status node for each memory object. Our approach tracks not only the bounds of each pointer's referent but also the status and reference count of the referent in its status node, where the status represents the liveness and segment type of the referent. A status node is smart as it is automatically destroyed when it becomes useless. To the best of our knowledge, SMATUS represents the most comprehensive approach of its kind. In terms of effectiveness (for detecting more kinds of errors), SMATUS outperforms state-of-the-art tools, Google's AddressSanitizer, SoftBoundCETS and Valgrind. In terms of performance, SMATUS outperforms SoftBoundCETS and Valgrind in terms of both time and memory overheads incurred, and is on par with AddressSanitizer in terms of the time and memory overheads tradeoff (with much lower memory overhead incurred).
引用
收藏
页码:296 / 308
页数:13
相关论文
共 50 条
  • [41] Intersection Types and Runtime Errors in the Pi-Calculus
    Dal Lago, Ugo
    de Visme, Marc
    Mazza, Damiano
    Yoshimizu, Akira
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2019, 3 (POPL):
  • [42] Memory errors
    Dipert, B
    EDN, 2001, 46 (26) : 61 - +
  • [43] A Smart Status Based Monitoring Algorithm for the Dynamic Analysis of Memory Safety
    Chen, Zhe
    Yan, Rui
    Ma, Yingzi
    Sui, Yulei
    Xue, Jingling
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2024, 33 (04)
  • [44] Runtime Detection Of Userspace Implants
    Pendergrass, J. Aaron
    Hull, Nathan
    Clemens, John
    Helble, Sarah C.
    Thober, Mark
    McGill, Kathleen
    Gregory, Machon
    Loscocco, Peter
    MILCOM 2019 - 2019 IEEE MILITARY COMMUNICATIONS CONFERENCE (MILCOM), 2019,
  • [45] Runtime latency detection and analysis
    Desfossez, Julien
    Desnoyers, Mathieu
    Dagenais, Michel R.
    SOFTWARE-PRACTICE & EXPERIENCE, 2016, 46 (10): : 1397 - 1409
  • [46] A class loading sensitive approach to detection of runtime type errors in component-based Java']Java programs
    Zhang, Wenbo
    Zhou, Xiaowei
    Zhang, Jianhua
    Zhang, Zhenyu
    Zhong, Hua
    INFORMATION AND SOFTWARE TECHNOLOGY, 2014, 56 (09) : 1076 - 1085
  • [47] Semeru: A Memory-Disaggregated Managed Runtime
    Wang, Chenxi
    Ma, Haoran
    Liu, Shi
    Li, Yuanqi
    Ruan, Zhenyuan
    Khanh Nguyen
    Bond, Michael D.
    Netravali, Ravi
    Kim, Miryung
    Xu, Guoqing Harry
    PROCEEDINGS OF THE 14TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION (OSDI '20), 2020, : 261 - 280
  • [48] Runtime Generation and Delivery of Guidance for Smart Object Ensembles
    Burmeister, Daniel
    Schrader, Andreas
    ADVANCES IN NEUROERGONOMICS AND COGNITIVE ENGINEERING, 2019, 775 : 287 - 296
  • [49] Tainting in Smart Contracts: Combining Static and Runtime Verification
    Azzopardi, Shaun
    Ellul, Joshua
    Falzon, Ryan
    Pace, Gordon J.
    RUNTIME VERIFICATION (RV 2022), 2022, 13498 : 143 - 161
  • [50] Runtime memory allocation in a heterogeneous reconfigurable platform
    Sima, Vlad-Mihai
    Bertels, Koen
    2009 INTERNATIONAL CONFERENCE ON RECONFIGURABLE COMPUTING AND FPGAS, 2009, : 71 - 76