Local Nontermination Detection for Parallel C++ Programs
Autoři | |
---|---|
Rok publikování | 2019 |
Druh | Článek ve sborníku |
Konference | International Conference on Software Engineering and Formal Methods |
Fakulta / Pracoviště MU | |
Citace | |
www | |
Doi | http://dx.doi.org/10.1007/978-3-030-30446-1_20 |
Klíčová slova | termination; nontermination; local nontermination; parallel programs; c++; model checking; DIVINE |
Popis | 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. |
Související projekty: |