Executable Counterexamples in Software Model Checking

Download: Paper, PDF Slides.

“Executable Counterexamples in Software Model Checking” by Jeffrey Gennari, Arie Gurfinkel, Temesghen Kahsai, Jorge A. Navas, and Edward J. Schwartz. In Proceedings of the Working Conference on Verified Software: Theories, Tools, and Experiments, 2018.

Abstract

Counterexamples — execution traces of the system that illustrate how an error state can be reached from the initial state — are essential for understanding verification failures. They are one of the most salient features of Model Checkers, which distinguish them from Abstract Interpretation and other Static Analysis techniques by providing a user with information on how to debug their system and/or the specification. While in Hardware and Protocol verification, the counterexamples can be replayed in the system, in Software Model Checking (SMC) counterexamples take the form of a textual or semi-structured report. This is problematic since it complicates the debugging process by preventing developers from using existing processes and tools such as debuggers, fault localization, and fault minimization.

In this paper, we argue that for SMC the most useful form of a counterexample is an executable mock environment that can be linked with the code under analysis (CUA) to produce an executable that exhibits the fault witnessed by the counterexample. A mock environment is different from a unit test since it can interface with the CUA at the function level, potentially allowing it to bypass complex logic that interprets program inputs. This makes mock environments easier to construct than unit tests. In this paper, we describe the automatic environment generation process that we have developed in the SeaHorn verification framework. We identify key challenges for generating mock environments from SMC counterexamples of complex memory manipulating programs that use many external libraries and function calls. We validate our prototype on the verification benchmarks from Linux Device Drivers in SV-COMP. Finally, we discuss open challenges and suggests avenues for future work.

Download: Paper, PDF Slides.

BibTeX entry:

@inproceedings{gennari:2018,
   author = {Jeffrey Gennari and Arie Gurfinkel and Temesghen Kahsai and
	Jorge A. Navas and Edward J. Schwartz},
   title = {Executable Counterexamples in Software Model Checking},
   booktitle = {Proceedings of the Working Conference on Verified
	Software: Theories, Tools, and Experiments},
   year = {2018}
}

(This webpage was created with bibtex2web.)

Back to publications.