PPR: Pairwise Program Reduction
Mengxiao Zhang, Zhenyang Xu, Yongqiang Tian, Yu Jiang, Chengnian Sun
摘要
Program reduction is a practical technique widely used for debugging compilers. To report a compiler bug with a bug-triggering program, one needs to minimize the program by removing bugirrelevant program elements first. Though existing program reduction techniques, such as C-Reduce and Perses, can reduce a bug-triggering program as a whole, they overlook the fact that the degree of relevance of each remaining token to the bug varies.
To this end, we propose Pairwise Program Reduction (PPR), a new program reduction technique for minimizing a pair of programs w.r.t. certain properties. Given a seed program 𝑃 𝑠 , a variant 𝑃 𝑣 derived from 𝑃 𝑠 , and the properties 𝑃 𝑠 and 𝑃 𝑣 exhibit separately (e.g., 𝑃 𝑣 crashes a compiler whereas 𝑃 𝑠 does not), PPR not only reduces the sizes of 𝑃 𝑠 and 𝑃 𝑣 , but also minimizes the differences between 𝑃 𝑠 and 𝑃 𝑣 . The final result of PPR is a pair of minimized programs that still preserve the properties, but the minimized differences between the pair highlight the critical program elements that are highly related to the bug.
To thoroughly evaluate PPR, we manually constructed the first pairwise benchmark suite from real-world compiler bugs (20 bugs in GCC and LLVM, 9 bugs in Rustc and 9 bugs in JerryScript). The evaluation results show that PPR significantly outperforms the baseline: DD, a variant of Delta Debugging. Specifically, on large and complex programs, PPR's reduction results are only 0.6% of those by DD w.r.t. program size. The sizes of the minimized variants (i.e., 𝑃 𝑣 ) by PPR are also comparable to those by Perses and C-Reduce; but PPR offers more for debugging by highlighting the critical, bug-inducing changes via the minimized differences. Evaluation on Rust and JavaScript demonstrates PPR's strong generality to other languages.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了每一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
引用它的顶会 Paper9
- LPR: Large Language Models-Aided Program ReductionMengxiao Zhang, Yongqiang Tian, Zhenyang Xu, Yiwen Dong 等ISSTA 2024 · 被引用 13 次
- Towards Understanding the Bugs in Solidity CompilerHaoyang Ma, Wuqi Zhang, Qingchao Shen, Yongqiang Tian 等ISSTA 2024 · 被引用 9 次
- WDD: Weighted Delta DebuggingXintong Zhou, Zhenyang Xu, Mengxiao Zhang, Yongqiang Tian 等ICSE 2025 · 被引用 5 次
- Boosting Program Reduction with the Missing Piece of Syntax-Guided TransformationsZhenyang Xu, Yongqiang Tian, Mengxiao Zhang, Chengnian SunOOPSLA 2025 · 被引用 1 次
- DuoReduce: Bug Isolation for Multi-layer Extensible CompilationJiyuan Wang, Yuxin Qiu, Ben Limpanukorn, Hong Jin Kang 等FSE 2025
它引用的顶会 Paper7
- NAUTILUS: Fishing for Deep Bugs with GrammarsCornelius Aschermann, Tommaso Frassetto, Thorsten Holz, Patrick Jauernig 等NDSS 2019 · 被引用 291 次
- Random testing for C and C++ compilers with YARPGenVsevolod Livinskii, Dmitry Babokin, John RegehrOOPSLA 2020 · 被引用 140 次
- Probabilistic Delta debuggingGuancheng Wang, Ruobing Shen, Junjie Chen, Yingfei Xiong 等FSE 2021 · 被引用 56 次
- Test-case reduction and deduplication almost for free with transformation-based compiler testingAlastair F. Donaldson, Paul Thomson, Vasyl Teliman, Stefano Milizia 等PLDI 2021 · 被引用 39 次
- Enhanced Compiler Bug Isolation via Memoized SearchJunjie Chen, Haoyang Ma, Lingming ZhangASE 2020 · 被引用 36 次
相关 Paper
- Pushing the Limit of 1-Minimality of Language-Agnostic Program ReductionZhenyang Xu, Yongqiang Tian, Mengxiao Zhang, Gaosen Zhao 等OOPSLA 2023 · 被引用 21 次
- Execution-Aware Program Reduction for WebAssembly via Record and ReplayDoehyun Baek, Daniel Lehmann, Ben L. Titzer, Sukyoung Ryu 等ASE 2025
- E2WR: An Effective and Efficient Reduction Framework for WebAssembly BinariesShiyao Zhou, Ningyu He, David Lo, Xiapu LuoISSTA 2026
- Structure-Aware Delta Debugging with Geometric-Information WeightsYonggang Tao, Jingling XueFSE 2026
- On the Feasibility of Deduplicating Compiler Bugs with BisectionXintong Zhou, Zhenyang Xu, Yongqiang Tian, Chengnian SunISSTA 2026 · 被引用 1 次
