Skip to content

Explorer fails on very large traces (RecursionError building the execution tree) #59

Closed

Description

@nils-loose

When a run hits a StackOverflowError on a symbolic path, the trace contains ~11k branches and the explorer stalls while processing it (minutes of constraint parsing/cache lookups, no new rounds).

Reproducer:

static int rec(int n) {
  if (n == 42) return rec(n);
  return n;
}
public static void main(String[] args) {
  int x = Verifier.nondetInt();
  rec(x);
  assert x != 7;
}

Expected: the explorer handles the large trace in reasonable time (or bounds it) and continues exploring, finding x == 7.

Not caused by the witness changes (#57); same behavior on dev.

Activity

  1. added this to the SV-COMP 2027 milestone on Oct 15, 2026
  2. nils-loose commented on Oct 15, 2026

    @nils-loose
    ContributorAuthor

    The full Java run (2026-10-15) found the cause on regular tasks. data/BinaryExecutionTree/Node.__init__ builds the tree with nested Node(...) constructor calls, one per branch. On Python ≥ 3.12 these recurse through the C stack, so sys.setrecursionlimit doesn't help and traces of about 3,300 branches raise RecursionError. The run then hangs (#62).

    35 runs affected:

    • jayhorn-recursive: 25
    • securibench: 6, including Collections14, Datastructures6 and Inter14, which expect a violation
    • java-ranger-regression: 4

    Fix: build the tree iteratively.

  3. changed the title [-]Explorer stalls on very large traces (e.g. StackOverflowError)[/-] [+]Explorer fails on very large traces (RecursionError building the execution tree)[/+] on Oct 15, 2026
  4. nils-loose commented on Oct 20, 2026

    @nils-loose
    ContributorAuthor

    Fixed in #72, merged into dev through #92.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions