Skip to content

fix: the fuzzer's corpus reaches Cover-Branches suites on reactive programs - #95

Merged
hbgit merged 4 commits into
developfrom
fix/fuzzer-corpus-pruned-paths
Nov 8, 2026
Merged

hbgit merged 4 commits into
developfrom
fix/fuzzer-corpus-pruned-paths

Conversation

@GuilhermeBn198

Copy link
Copy Markdown
Collaborator

Test-Comp 2027 pre-run: on reactive programs (while (1) with assume_abort_if_not, mostly Hardness), every fuzzer execution ends in a failed assumption. The witness replay that turns a queue entry into a test case jumped out without writing the nondet log, so every entry was dropped (median Hardness suite: 2 tests).

  • The replay writes the inputs read before the rejected one, and marks the vector as a pruned prefix.
  • In the suite, the fuzzer's prefixes come after the inputs that ran to the end and are written as assumption-pruned cases, which give way when the suite is full. Without that rule they took all 50 places (hardness_kloop_100_1loop_file-32: 62.7% → 2.4%).
  • New integration test tests/integration/test_fuzzer_pruned_corpus.sh (in CI).

A/B on 24 Cover-Branches tasks (900 s, 3 GB, 1 core, TestCov gcc), against Zenodo 24031752: sum 7.81 → 13.56, higher on 13 tasks, lower on none. Details in docs/reports/tacas-experiment-log.md.

A reactive while(1) program ends every execution in a failed assumption;
the witness replay longjmp'd out without writing klee_log.csv, so the
fuzzer's corpus never reached the Cover-Branches suite (Hardness median:
2 tests in the Test-Comp 2027 pre-run).
With it, the validator's harness reproduces the abort(), and gcov writes
nothing for a test that aborts: 44 such tests measured 2.38% where the
21 KLEE paths ending in exit gave 62.7% (hardness_kloop_100_1loop_file-32).
Without it, the harness runs out of inputs at that read and exits.
@hbgit
hbgit merged commit 99ad840 into develop Nov 8, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants