Skip to content

feat(fuzz): persist worker corpus immediately#15816

Open
decofe wants to merge 2 commits into
centaur/stack-corpus-mutator-prs-1784125633from
centaur/immediate-corpus-persistence-1784381329
Open

feat(fuzz): persist worker corpus immediately#15816
decofe wants to merge 2 commits into
centaur/stack-corpus-mutator-prs-1784125633from
centaur/immediate-corpus-persistence-1784381329

Conversation

@decofe

@decofe decofe commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • remove live/deferred corpus insertion modes and write interesting entries directly to each worker corpus
  • stop carrying corpus artifacts through end-of-run aggregation
  • expand configured gzip corpus files before invariant campaigns and recompress eligible entries after workers finish
  • keep the aggregated optimization best as the final persisted optimization state

Validation

  • cargo +nightly fmt --all -- --check
  • git diff --check
  • cargo metadata --no-deps --format-version 1
  • cargo check -p foundry-evm --lib could not start because fetching foundry-rs/optimism returned HTTP 401

Stacked on #15763. Closes OSS-574

Prompted by: @0xalpharush

@0xalpharush

Copy link
Copy Markdown
Collaborator

derek bench invariant

@github-actions

github-actions Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

cc @0xalpharush

bench (invariant) event published. Results will be reported separately. View publisher run

Config: subcommand: invariant, PR SHA: 1660ded56102, compare-ref: master, timeout: 3600s, workers: default, benchmark-type: property

@mablr mablr self-assigned this Jul 21, 2026
if is_gzip == gzip {
continue;
}
let tx_seq = entry.read_tx_seq()?;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes one corrupt/truncated corpus entry abort campaign preparation or finalization. The normal loader warns and skips unreadable entries; this rewrite should preserve that tolerance (or preferably avoid rewriting the whole corpus at campaign boundaries).

if persist_now {
self.persist_optimization_state();
}
self.persist_optimization_state();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All workers can write the same optimization_best.json concurrently via truncate-and-write. Overlapping writes or a crash can leave malformed JSON or a lower best. Please keep this coordinator-owned, or use an atomic locked max update.

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

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants