Local Nontermination Detection for Parallel C++ Programs

Investor logo

Warning

This publication doesn't include Faculty of Arts. It includes Faculty of Informatics. Official publication website can be found on muni.cz.
Authors

ŠTILL Vladimír BARNAT Jiří

Year of publication 2019
Type Article in Proceedings
Conference International Conference on Software Engineering and Formal Methods
MU Faculty or unit

Faculty of Informatics

Citation
Web
Doi http://dx.doi.org/10.1007/978-3-030-30446-1_20
Keywords termination; nontermination; local nontermination; parallel programs; c++; model checking; DIVINE
Description One of the key problems with parallel programs is ensuring that they do not hang or wait indefinitely – i.e. there are no deadlocks, livelocks and the program proceeds towards its goals. In this work, we present a practical approach to detection of nonterminating sections of programs written in C or C++, and its implementation into the model checker. This complements the existing techniques for finding safety violations such as assertion failures and memory errors. Our approach makes it possible to detect partial deadlocks and livelocks, i.e. those situations in which some of the threads are progressing normally while the others are waiting indefinitely. The approach is also applicable to programs that do not terminate (such as daemons with infinite control loops) as it can be configured to check only for termination of selected sections of the program. The termination criteria can be user-provided, however, comes with the set of built-in termination criteria suited for the analysis of programs with mutexes and other common synchronisation primitives.
Related projects:

You are running an old browser version. We recommend updating your browser to its latest version.