AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Informational 14 Bitcoin

Merge rust-bitcoin/rust-bitcoin#6811: ci: add corpus fuzzing crash store

Public commit record

What the developer wrote

Authored by Andrew Poelstra

100/100 · Strong
Merge rust-bitcoin/rust-bitcoin#6811: ci: add corpus fuzzing crash store

e2a6f4bfd56b0657bb2da53946d88fdd387ba5f0 ci: report job summary for store replay crashes (satsfy (Renato Britto))
7b27d482f8e242d579a54a9751a4ef750421945e ci: fix crash artifacts never reaching the store (satsfy (Renato Britto))
9911d236ace906e8380cf6677f766a8b73c9867a fuzz: cap the crash store at 10k inputs (satsfy (Renato Britto))
257dd39debc6e893c32b16fea64111a5c9143d02 ci: add fuzz crash store (satsfy (Renato Britto))
99a6ffe724d54049f3dfbccd4815c44aeb99717a fuzz: unify target rustflags in one place (satsfy (Renato Britto))

Pull request description:

Fixes the issue I mentioned on https://github.com/rust-bitcoin/rust-bitcoin/issues/6784 and https://github.com/rust-bitcoin/rust-bitcoin/issues/6813.

Every time a crash happens, corpus fuzzing reports it and forgets. The issue gets automatically closed and CI would forget a problem ever existed. The error may or may not be re-encountered in the future.

This PR makes found errors persistent on a crash store. Every fuzzing error gets saved there. At the end corpus fuzzing daily run, after qa-assets corpora was updated, it replays the crash store.

This gives us 3 properties:
1. errors are not lost;
2. corpus fuzzing will not pass while an error still exists in the codebase and;
3. the normal fuzzing workflow keeps running uninterrupted (because any job that previously failed, moved the error to crash store so it will fuzz again now just fine).

Also unified the fuzz flags so because they were replicated in multiple scripts.

After these changes prove to work well on production, I'll put up the final change: run crash store on every PR. An automatic fuzz regression check.


ACKs for top commit:
apoelstra:
ACK e2a6f4bfd56b0657bb2da53946d88fdd387ba5f0; successfully ran local tests


Tree-SHA512: adb7b6719567ae257ac6dea427e097578fc028784c9aba00708d23f6d441faeac9bd7eaa911ac45f1bc11155d6b6d519e8cb5a319eabcf17621a1551d9b2de96
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit is a CI (Continuous Integration) improvement for the project's fuzz testing pipeline. It adds a persistent 'crash store' so that fuzzing crashes are saved and later replayed to catch regressions. It does not change the actual Bitcoin library code, does not fix a security bug, and does not introduce a vulnerability. It is purely an infrastructure change to make fuzz testing more reliable.

Recommended action

No security action required. Review as normal CI/infrastructure maintenance. If desired, verify the new replay-crash-store job has appropriate permissions and that the crash store pruning logic behaves correctly under edge cases (empty store, many targets).

Security signals we found

01

No library code changes

02

No cryptographic or parsing logic changes

03

CI-only fuzzing infrastructure change

04

No vulnerability fix or security patch present

05

No vendor security disclosure language in commit or PR description

Risk score

Why this scored 14/100

Our methodology →
Potential impact 0/30
Exploitability 0/25
Stealth signal 0/15
Affected reach 0/15
Confidence 9/10
Evidence quality 5/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.