Verifying Dynamic Pointer-Manipulating Threads

  • Authors:
  • Thomas Noll;Stefan Rieger

  • Affiliations:
  • Software Modeling and Verification Group, RWTH Aachen University, Aachen, Germany 52056;Software Modeling and Verification Group, RWTH Aachen University, Aachen, Germany 52056

  • Venue:
  • FM '08 Proceedings of the 15th international symposium on Formal Methods
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present a novel approach to the verification of concurrent pointer-manipulating programs with dynamic thread creation and memory allocation as well as destructive updates operating on arbitrary (possibly cyclic) singly-linked data structures. Correctness properties of such programs are expressed by combining a simple pointer logic for specifying heap properties with linear-time (LTL) operators for reasoning about system executions. To automatically solve the corresponding model-checking problem, which is undecidable in general, we abstract from non-interrupted sublists in the heap, resulting in a finite-state representation of the data space. We also show that the control flow of a concurrent program with unbounded thread creation can be characterized by a Petri net, making LTL model checking decidable (though not feasible in practice). In a second abstraction step we also derive a finite-state representation of the control flow, which then allows us to employ standard LTL model checking techniques.