Table of Contents
Fetching ...

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.

Provenance Guided Rollback Suggestions

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 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 while providing higher quality results.
Paper Structure (39 sections, 7 equations, 6 figures, 1 table, 3 algorithms)

This paper contains 39 sections, 7 equations, 6 figures, 1 table, 3 algorithms.

Figures (6)

  • Figure 1: A scenario where an incremental update results in faults in the output
  • Figure 2: Program Analysis Datalog Setup
  • Figure 3: Fault Localization and Repair System
  • Figure 4: The proof tree for alias(userSession,sec). (+) denotes tuples that are inserted as a result of the incremental update, red denotes tuples that were not affected by the incremental update.
  • Figure 5: A fault localization is a subset of input changes such that the faults are still reproduced
  • ...and 1 more figures

Theorems & Definitions (5)

  • Definition 3.1
  • Definition 4.1: Intended Output
  • Definition 4.2: Fault
  • Definition 4.3: Fault Localization
  • Definition 4.4: Rollback Suggestion