BIROn - Birkbeck Institutional Research Online

    Automatically proving termination and memory safety for programs with pointer arithmetic

    Ströder, T. and Giesl, J. and Brockschmidt, M. and Frohn, F. and Fuhs, Carsten and Hensel, J. and Schneider-Kamp, P. and Aschermann, C. (2017) Automatically proving termination and memory safety for programs with pointer arithmetic. Journal of Automated Reasoning 58 (1), pp. 33-65. ISSN 0168-7433.

    [img]
    Preview
    Text
    JAR-llvm-pointer.pdf - Author's Accepted Manuscript

    Download (434kB) | Preview

    Abstract

    While automated verification of imperative programs has been studied intensively, proving termination of programs with explicit pointer arithmetic fully automatically was still an open problem. To close this gap, we introduce a novel abstract domain that can track allocated memory in detail. We use it to automatically construct a symbolic execution graph that over-approximates all possible runs of a program and that can be used to prove memory safety. This graph is then transformed into an integer transition system, whose termination can be proved by standard techniques. We implemented this approach in the automated termination prover AProVE and demonstrate its capability of analyzing C programs with pointer arithmetic that existing tools cannot handle.

    Metadata

    Item Type: Article
    Additional Information: The final publication is available at Springer via the link above.
    Keyword(s) / Subject(s): LLVMC programs, Termination, Memory Safety, Symbolic Execution
    School: Birkbeck Faculties and Schools > Faculty of Science > School of Computing and Mathematical Sciences
    Depositing User: Carsten Fuhs
    Date Deposited: 01 Nov 2016 11:07
    Last Modified: 09 Aug 2023 12:39
    URI: https://eprints.bbk.ac.uk/id/eprint/16552

    Statistics

    Activity Overview
    6 month trend
    481Downloads
    6 month trend
    274Hits

    Additional statistics are available via IRStats2.

    Archive Staff Only (login required)

    Edit/View Item
    Edit/View Item