Parallel Program Analysis on Path Ranges
Jan Haltermanna, Marie-Christine Jakobs, Cedric Richter, Heike Wehrheim
TL;DR
Ranged program analysis extends the concept of path range parallelism to arbitrary analyses by splitting the program execution space into path ranges and running different analyses on each range. It introduces a range reduction CPA and a splitting strategy, plus a witness joining mechanism to compose partial results into a full program verdict, with work stealing to balance workload across analyses. Empirical evaluation on SV-COMP benchmarks shows that combining path-range partitioning with both same and different analyses can increase the number of solved tasks, especially when leveraging work stealing, while maintaining sound witness validation. The approach is implemented in CPA-checker and Co-Veri-Team and demonstrates practical gains for cooperative verification and scalable software analysis.
Abstract
Symbolic execution is a software verification technique symbolically running programs and thereby checking for bugs. Ranged symbolic execution performs symbolic execution on program parts, so called path ranges, in parallel. Due to the parallelism, verification is accelerated and hence scales to larger programs. In this paper, we discuss a generalization of ranged symbolic execution to arbitrary program analyses. More specifically, we present a verification approach that splits programs into path ranges and then runs arbitrary analyses on the ranges in parallel. Our approach in particular allows to run different analyses on different program parts. We have implemented this generalization on top of the tool CPAchecker and evaluated it on programs from the SV-COMP benchmark. Our evaluation shows that verification can benefit from the parallelisation of the verification task, but also needs a form of work stealing (between analyses) as to become efficient
