Software Engineering
New fuzzer suppresses known bugs in deep learning compilers to find more novel defects
Reprise avoids re-triggering previously discovered bugs by learning their patterns, freeing fuzzing resources to hunt fresh vulnerabilities.
Fuzzing has proven valuable for uncovering bugs in deep learning compilers, yet most existing testing tools keep re-discovering the same defects. While some fuzzers try to vary their test inputs and others filter duplicate crash reports after the fact, neither approach prevents the core problem: wasted testing cycles on known vulnerabilities.
How Reprise works differently#
A new fuzzer called Reprise tackles this by learning what causes known bugs and actively avoiding those patterns during test generation. Rather than relying on heavyweight program generators, Reprise uses a lightweight approach that builds test graphs in a unified intermediate representation (UIR) using local operator signatures. When it detects that a newly generated graph would trigger a known defect, it regenerates that portion of the graph before ever running it through the compiler—preventing the redundant test entirely.
The key innovation is distilling each discovered defect into a semantic graph pattern that captures the operators, value constraints, graph context, and data flow needed to trigger the bug. This pattern library acts as a blacklist during synthesis, steering the fuzzer away from known problems.
Evaluation and results#
The team evaluated Reprise on three major DL compilers: TVM, PyTorch Inductor, and ONNX Runtime. Compared to an unguided baseline version of itself, pattern-based guidance dramatically reduced redundant crashes—dropping reports by 90.2% on TVM (from 254 to 25) and 93.8% on PyTorch Inductor (from 594 to 37). Remarkably, this efficiency gain came with comparable code coverage and required 1–18% fewer test executions.
Beyond eliminating known issues, Reprise also discovered 25 previously unknown bugs across the three compilers. Most were found within the first month of testing, with 7 already fixed and 12 more confirmed by developer teams.
Why it matters#
By redirecting fuzzing effort away from re-discovering the same faults, tools like Reprise make automated testing more efficient at finding novel vulnerabilities. This approach could reduce the noise in fuzzing campaigns and accelerate the identification of truly new security and reliability issues in compiler infrastructure.