@inproceedings{SB2019, abstract = {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 DIVINE 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, DIVINE comes with the set of built-in termination criteria suited for the analysis of programs with mutexes and other common synchronisation primitives.}, address = {Cham}, author = {{\v{S}}till, Vladim{\'i}r and Barnat, Ji{\v{r}}{\'i}}, booktitle = {Software Engineering and Formal Methods}, doi = {10.1007/978-3-030-30446-1_20}, editor = {{\"O}lveczky, Peter Csaba and Sala{\"u}n, Gwen}, isbn = {978-3-030-30446-1}, note = {https://divine.fi.muni.cz/2019/lnterm}, pages = {373--390}, publisher = {Springer International Publishing}, title = {Local Nontermination Detection for Parallel C++ Programs}, year = {2019} }