Summary: Automated Detection of Non-Termination and
NullPointerExceptions for Java Bytecode
Marc Brockschmidt, Thomas Str¨oder, Carsten Otto, and J¨urgen Giesl
LuFG Informatik 2, RWTH Aachen University, Germany
Abstract. Recently, we developed an approach for automated termina-
tion proofs of Java Bytecode (JBC), which is based on constructing and
analyzing termination graphs. These graphs represent all possible pro-
gram executions in a finite way. In this paper, we show that this approach
can also be used to detect non-termination or NullPointerExceptions.
Our approach automatically generates witnesses, i.e., calling the program
with these witness arguments indeed leads to non-termination resp. to
a NullPointerException. Thus, we never obtain "false positives". We
implemented our results in the termination prover AProVE and provide
experimental evidence for the power of our approach.
To use program verification in the software development process, one is not
only interested in proving the validity of desired program properties, but also in
providing a witness (i.e., a counterexample) if the property is violated.
Our approach is based on our earlier work to prove termination of JBC [4,
6, 17]. Here, a JBC program is first automatically transformed to a termination