Application of Counterexample-Guided Abstraction Refinement on Concurrent Programs

Levente Bajczi
2021 Zenodo  
Effectively handling multithreaded programs is an active field of research in the context of formal software verification. As the world moves to multi-core processors in safety-critical settings, a robust solution is necessary to prove safety considering the increased complexity. The main source of the new challenges is the concurrent manipulation of shared data, where new kinds of problems (such as memory- and cache inconsistency) might cause unforeseen faults in software and hardware, leading
more » ... to potentially catastrophic failures. Previously published research in software verification has mostly targeted a subset of the problem, narrowing it down to the case when access to shared data is strictly sequential. These approaches are not suitable for the analysis of weakly ordered hardware-software systems, which are widely used and represent a generally more efficient solution to parallelization. In recent years, there has been work on providing broader, memory model-aware approaches. Due to the complexity of the problem, these have generally been extensions to bounded analysis techniques, which can only reason about the first k steps of the program, lacking generality. In this report, I introduce a novel, memory model-aware Counterexample-Guided Abstraction Refinement (CEGAR) based algorithm for handling the unbounded analysis of weakly-ordered concurrent programs. I evaluate the efficiency of this algorithm by comparing it to the state-of-the-art verification tools for sequentially- and weakly-ordered programs. I also present an overview of existing approaches to handling sequentiallyordered concurrent programs using the Counterexample-Guided Abstraction Refinement (CEGAR) technique. I compare and contrast these approaches by their complexity, efficiency and usability as general-purpose software verification tools.
doi:10.5281/zenodo.5905781 fatcat:r3rpu5khvjfkfhhtvl2l6gisti