A reachability predicate for analyzing low-level software

  • Authors:
  • Shaunak Chatterjee;Shuvendu K. Lahiri;Shaz Qadeer;Zvonimir Rakamaric

  • Affiliations:
  • Indian Institute of Technology, Kharagpur;Microsoft Research;Microsoft Research;University of British Columbia

  • Venue:
  • TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
  • Year:
  • 2007

Quantified Score

Hi-index 0.02

Visualization

Abstract

Reasoning about heap-allocated data structures such as linked lists and arrays is challenging. The reachability predicate has proved to be useful for reasoning about the heap in type-safe languages where memory is manipulated by dereferencing object fields. Sound and precise analysis for such data structures becomes significantly more challenging in the presence of low-level pointer manipulation that is prevalent in systems software. In this paper, we give a novel formalization of the reachability predicate in the presence of internal pointers and pointer arithmetic. We have designed an annotation language for C programs that makes use of the new predicate. This language enables us to specify properties of many interesting data structures present in the Windows kernel. We present preliminary experience with a prototype verifier on a set of illustrative C benchmarks.