Affiliation:
1. University of Illinois at Urbana-Champaign, USA
Abstract
We investigate the decidability of automatic program verification for programs that manipulate heaps, and in particular, decision procedures for proving memory safety for them. We extend recent work that identified a decidable subclass of uninterpreted programs to a class of alias-aware programs that can update maps. We apply this theory to develop verification algorithms for memory safety— determining if a heap-manipulating program that allocates and frees memory locations and manipulates heap pointers does not dereference an unallocated memory location. We show that this problem is decidable when the initial allocated heap forms a forest data-structure and when programs are
streaming-coherent
, which intuitively restricts programs to make a single pass over a data-structure. Our experimental evaluation on a set of library routines that manipulate forest data-structures shows that common single-pass algorithms on data-structures often fall in the decidable class, and that our decision procedure is efficient in verifying them.
Funder
National Science Foundation
Google
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Reference54 articles.
1. Streaming transducers for algorithmic verification of single-pass list-processing programs
2. Efficient detection of all pointer and array access errors
3. Shape Analysis by Predicate Abstraction
4. Automatic predicate abstraction of C programs
5. Sébastien Bardin Alain Finkel and David Nowak. 2004. Toward symbolic verification of programs handling pointers. (2004). Sébastien Bardin Alain Finkel and David Nowak. 2004. Toward symbolic verification of programs handling pointers. (2004).
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献