Provenance Guided Rollback Suggestions
David Zhao, Pavle Subotic, Mukund Raghothaman, Bernhard Scholz
TL;DR
This paper tackles automated debugging for incremental Datalog analyses by introducing provenance-guided rollback, which localizes fault-causing changes and suggests targeted rollbacks. The authors integrate an incremental provenance mechanism with incremental evaluation in Soufflé, and develop two interlinked algorithms: fault localization to reproduce faults and rollback repair to remove minimal inserted tuples via an ILP formulation. Their approach is evaluated on large Doop/DaCapo Java benchmarks, achieving a speedup of over $26.9\times$ compared to delta debugging and producing smaller repairs in about 27% of benchmarks. The work demonstrates practical, scalable partial rollback debugging for static program analyses and outlines extensions for missing tuples, negation, and rule changes, with potential applicability beyond software analysis domains.
Abstract
Advances in incremental Datalog evaluation strategies have made Datalog popular among use cases with constantly evolving inputs such as static analysis in continuous integration and deployment pipelines. As a result, new logic programming debugging techniques are needed to support these emerging use cases. This paper introduces an incremental debugging technique for Datalog, which determines the failing changes for a \emph{rollback} in an incremental setup. Our debugging technique leverages a novel incremental provenance method. We have implemented our technique using an incremental version of the Soufflé Datalog engine and evaluated its effectiveness on the DaCapo Java program benchmarks analyzed by the Doop static analysis library. Compared to state-of-the-art techniques, we can localize faults and suggest rollbacks with an overall speedup of over 26.9$\times$ while providing higher quality results.
