  Verifying multi-threaded programs is becoming more and more important,
because of the strong trend to increase the number of processing units per CPU
socket. We introduce a new configurable program analysis for verifying
multi-threaded programs with a bounded number of threads. We present a simple
and yet efficient implementation as component of the existing
program-verification framework CPAchecker. While CPAchecker is already
competitive on a large benchmark set of sequential verification tasks, our
extension enhances the overall applicability of the framework. Our
implementation of handling multiple threads is orthogonal to the abstract
domain of the data-flow analysis, and thus, can be combined with several
existing analyses in CPAchecker, like value analysis, interval analysis, and
BDD analysis. The new analysis is modular and can be used, for example, to
verify reachability properties as well as to detect deadlocks in the program.
This paper includes an evaluation of the benefit of some optimization steps
(e.g., changing the iteration order of the reachability algorithm or applying
partial-order reduction) as well as the comparison with other state-of-the-art
tools for verifying multi-threaded programs.
