mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-10 10:52:31 -05:00
doc: describe in fuzzing.md how to reproduce a CI crash
and add/improve a few headers
This commit is contained in:
parent
7041d256e3
commit
d8f1ea7227
1 changed files with 17 additions and 1 deletions
|
@ -16,7 +16,7 @@ $ FUZZ=process_message src/test/fuzz/fuzz
|
||||||
# abort fuzzing using ctrl-c
|
# abort fuzzing using ctrl-c
|
||||||
```
|
```
|
||||||
|
|
||||||
## Fuzzing harnesses, fuzzing output and fuzzing corpora
|
## Fuzzing harnesses and output
|
||||||
|
|
||||||
[`process_message`](https://github.com/bitcoin/bitcoin/blob/master/src/test/fuzz/process_message.cpp) is a fuzzing harness for the [`ProcessMessage(...)` function (`net_processing`)](https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp). The available fuzzing harnesses are found in [`src/test/fuzz/`](https://github.com/bitcoin/bitcoin/tree/master/src/test/fuzz).
|
[`process_message`](https://github.com/bitcoin/bitcoin/blob/master/src/test/fuzz/process_message.cpp) is a fuzzing harness for the [`ProcessMessage(...)` function (`net_processing`)](https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp). The available fuzzing harnesses are found in [`src/test/fuzz/`](https://github.com/bitcoin/bitcoin/tree/master/src/test/fuzz).
|
||||||
|
|
||||||
|
@ -64,6 +64,8 @@ block^@M-^?M-^?M-^?M-^?M-^?nM-^?M-^?
|
||||||
|
|
||||||
In this case the fuzzer managed to create a `block` message which when passed to `ProcessMessage(...)` increased coverage.
|
In this case the fuzzer managed to create a `block` message which when passed to `ProcessMessage(...)` increased coverage.
|
||||||
|
|
||||||
|
## Fuzzing corpora
|
||||||
|
|
||||||
The project's collection of seed corpora is found in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
The project's collection of seed corpora is found in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
||||||
|
|
||||||
To fuzz `process_message` using the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) seed corpus:
|
To fuzz `process_message` using the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) seed corpus:
|
||||||
|
@ -81,6 +83,20 @@ INFO: seed corpus: files: 991 min: 1b max: 1858b total: 288291b rss: 150Mb
|
||||||
…
|
…
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Reproduce a fuzzer crash reported by the CI
|
||||||
|
|
||||||
|
- `cd` into the `qa-assets` directory and update it with `git pull qa-assets`
|
||||||
|
- locate the crash case described in the CI output, e.g. `Test unit written to
|
||||||
|
./crash-1bc91feec9fc00b107d97dc225a9f2cdaa078eb6`
|
||||||
|
- make sure to compile with all sanitizers, if they are needed (fuzzing runs
|
||||||
|
more slowly with sanitizers enabled, but a crash should be reproducible very
|
||||||
|
quickly from a crash case)
|
||||||
|
- run the fuzzer with the case number appended to the seed corpus path:
|
||||||
|
`FUZZ=process_message src/test/fuzz/fuzz
|
||||||
|
qa-assets/fuzz_seed_corpus/process_message/1bc91feec9fc00b107d97dc225a9f2cdaa078eb6`
|
||||||
|
|
||||||
|
## Submit improved coverage
|
||||||
|
|
||||||
If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
If you find coverage increasing inputs when fuzzing you are highly encouraged to submit them for inclusion in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo.
|
||||||
|
|
||||||
Every single pull request submitted against the Bitcoin Core repo is automatically tested against all inputs in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Bitcoin Core more robust.
|
Every single pull request submitted against the Bitcoin Core repo is automatically tested against all inputs in the [`bitcoin-core/qa-assets`](https://github.com/bitcoin-core/qa-assets) repo. Contributing new coverage increasing inputs is an easy way to help make Bitcoin Core more robust.
|
||||||
|
|
Loading…
Add table
Reference in a new issue