MOVES-Seminar, 17 April 2008

 

Verifying Dynamic Pointer-Manipulating Threads

 

Stefan Rieger

 

Abstract:

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