Problem Description
The SOF IPC fuzzer (native_sim + libFuzzer, driven by sof/scripts/fuzz.sh) is useful, but a non-trivial share of the crashes it reports do not reproduce when the saved artifact is replayed, large parts of the IPC4 surface are effectively unreachable, libFuzzer runs without dictionaries or a curated seed corpus, there is no structured mutator, and heap errors in sys_heap are invisible to ASan. SOF #9742 is a concrete example of the cost: most of the debugging time went into ruling out the harness itself before the firmware bug could be analysed.
Planned improvements
Out of scope
- Cross-architecture (xtensa) fuzzing.
Problem Description
The SOF IPC fuzzer (
native_sim+ libFuzzer, driven bysof/scripts/fuzz.sh) is useful, but a non-trivial share of the crashes it reports do not reproduce when the saved artifact is replayed, large parts of the IPC4 surface are effectively unreachable, libFuzzer runs without dictionaries or a curated seed corpus, there is no structured mutator, and heap errors insys_heapare invisible to ASan. SOF #9742 is a concrete example of the cost: most of the debugging time went into ruling out the harness itself before the firmware bug could be analysed.Planned improvements
LLVMFuzzerCustomMutatorfor IPC4 envelopes (and evaluate one for IPC3).Out of scope