Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

feat(fuzz): persist worker corpus immediately#15816

Open
decofe wants to merge 2 commits into
centaur/stack-corpus-mutator-prs-1784125633foundry-rs/foundry:centaur/stack-corpus-mutator-prs-1784125633from
centaur/immediate-corpus-persistence-1784381329foundry-rs/foundry:centaur/immediate-corpus-persistence-1784381329Copy head branch name to clipboard
Open

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

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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.