ClusterFuzz is a distributed fuzzing infrastructure that automatically executes libFuzzer powered fuzzer tests on scale.
Googlers can read more here.
The integration between libFuzzer and ClusterFuzz consists of:
gn refs, builds fuzz targets with multiple sanitizers and uploads binaries to a GCS bucket. Recipe is defined in chromium_libfuzzer.py.
ClusterFuzz uses two corpus types with libFuzzer:
Seed (or static) corpus: files manually uploaded by developers. ClusterFuzz uses these files for fuzzing but doesn't delete/overwrite them.
General (or working) corpus: files generated by fuzzers themselves. These corpus files are frequently modified during fuzzing sessions and can be deleted during corpus minimization.
A fuzz target has two input corpus directories, seed and general, but its output goes into general corpus directory. Seed corpus is read-only.