SSFuzz: Synthesizing and scheduling bug-triggering code segments for history-driven compiler testing
摘要
History-driven fuzzing is a viable method to expose compiler bugs. It leverages historical information, such as historical test programs and historical execution information, to locate error-prone modules and conduct continuous testing. However, existing works are inefficient in utilizing historical information, resulting in a limited bug-triggering capability. In this work, we propose SSFuzz, a compiler fuzzer that synthesizes bug-triggering code segments into test cases and schedules both seed programs and code segments. SSFuzz collects bug-triggering code segments from bug-related pull requests and synthesizes them into test cases using different strategies. During the period of testing, SSFuzz uses an entropy-based scheduler to prioritize code segments based on the behavior of target JVMs, and retain test cases as seed programs according to the anomalous behavior feedback and code coverage feedback. During the bug submission phase, SSFuzz successfully uncovered 20 previously undetected bugs across all three target JVMs. Out of these, 14 have been verified, and 3 have already been fixed. Compared with state-of-the-art fuzzers, SSFuzz uncovers