[論文レビュー] A Survey of Modern Compiler Fuzzing
本調査は、現代のコンパイラファズィング技術について包括的な分析を提供し、コンパイラのバグを検出するためのテストプログラム生成とテストオラクル設計に焦点を当てる。GCC、LLVM、DL、JVMコンパイラを含む主流およびドメイン特化コンパイラに関する58件の研究を統合し、有効性、多様性、拡張性、評価の分野における主な課題と今後の研究方向性を特定する。
Most software that runs on computers undergoes processing by compilers. Since compilers constitute the fundamental infrastructure of software development, their correctness is paramount. Over the years, researchers have invested in analyzing, understanding, and characterizing the bug features over mainstream compilers. These studies have demonstrated that compilers correctness requires greater research attention, and they also pave the way for compiler fuzzing. To improve compilers correctness, researchers have proposed numerous compiler fuzzing techniques. These techniques were initially developed for testing traditional compilers such as GCC/LLVM and have since been generalized to test various newly developed, domain-specific compilers, such as graphics shader compilers and deep learning (DL) compilers. In this survey, we provide a comprehensive summary of the research efforts for understanding and addressing compilers defects. Specifically, this survey mainly covers two aspects. First, it covers researchers investigation and expertise on compilers bugs, such as their symptoms and root causes. The compiler bug studies cover GCC/LLVM, JVM compilers, and DL compilers. In addition, it covers researchers efforts in designing fuzzing techniques, including constructing test programs and designing test oracles. Besides discussing the existing work, this survey outlines several open challenges and highlights research opportunities.
研究の動機と目的
- 現代のコンパイラおよびドメイン特化コンパイラにおけるコンパイラファズィングの最先端技術を体系的に分析すること。
- 潜在的なコンパイラバグを引き起こす有効で多様なテストプログラムを生成する際の核心的課題を特定すること。
- コンパイル済みバイナリ内で微細な意味的バグを検出するための革新的なテストオラクル設計を検討すること。
- コンパイラファズィングツールの拡張性、一般化可能性、評価フレームワークにおける未解決の問題を浮き彫りにすること。
- コンパイラ正しさとファズィング手法に関する今後の研究機会を提示することで、研究者および実務家を支援すること。
提案手法
- GCC、LLVM、JVM、およびDLやグラフィックスシェーダコンパイラなどのドメイン特化コンパイラを対象とした、コンパイラファズィングに関する58件の高品質な研究論文を調査する。
- 文法ベース生成(例:Csmith)、変異ベースアプローチ(例:EMI、Athena)、LLM支援合成を含む、テストプログラム生成技術の分類と分析を行う。
- ソースコードとコンパイル済みコードの間の意味的差異を検出するテストオラクルメカニズムの評価を行い、カバレッジガイドド型および意味論に配慮したオラクルを含む。
- コードカバレッジや特徴ベースカバレッジといった多様性メトリクスを評価し、テストプログラムの多様性と有効性を定量化する。
- 既存ツールにおける拡張性の課題を検討し、ハードコードされた文法や、複数のコンパイラ間での移植性に欠けるモジュラー設計の欠如を含む。
- 評価手法を検討し、新しいファズィング手法の公平な比較を可能にするために、標準化されたベンチマークと共通の評価プロトコルの導入を提言する。
実験結果
リサーチクエスチョン
- RQ1現代のコンパイラ向けに、有効で多様なテストプログラムを生成する際の主な課題は何ですか?
- RQ2既存のテストオラクルは、コンパイル済みバイナリ内で微細な意味的不変バグをどのように検出していますか?
- RQ3現在のコンパイラファズィングツールは、異なるコンパイラコンponentや言語間で、拡張性と一般化可能性にどのような制限を受けていますか?
- RQ4コンパイラファズィングの評価フレームワークをどのように標準化すれば、再現可能性と公平な比較を確保できるでしょうか?
- RQ5大規模言語モデル(LLM)は、コンパイラファズィングにおける文法学習とテストプログラム合成のための人的作業を軽減するために、どのような役割を果たすでしょうか?
主な発見
- コンパイラファズィングは、アサーションエラー、セグメンテーションフォールト、および形式的に正しいプログラムの誤コンパイルを引き起こす深刻なバグを発見するのに効果的である。
- 多くのコンパイラバグはCのような言語における未定義動作に起因しており、このような構文を避けるファズィングツールは、テスト生成の信頼性が高くなる。
- カバレッジガイドドテストと特徴ベースの多様性メトリクスは、潜在的なコンパイラバグを引き起こす可能性を高めるのに有効である。
- Athena や EMI といった変異ベースのツールは、フィードバック駆動戦略を組み込むことで、従来のアプローチに比べて多様性とバグ検出能力が顕著に向上している。
- 現在のツールは、ハードコードされた文法とモジュラー設計の欠如により、拡張性が著しく低いことが課題となっており、新しいコンパイラへの移植に時間がかかる。
- LLMは、有効なプログラムの生成や言語文法の学習において有望な成果を示しているが、複雑で型安全かつ意味的に正しいプログラムを生成する能力は依然として限定的であり、さらなる研究が求められる。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。