Skip to main content
QUICK REVIEW

[논문 리뷰] A Survey of Modern Compiler Fuzzing

Haoyang Ma|arXiv (Cornell University)|2023. 06. 12.
Software Testing and Debugging Techniques인용 수 4
한 줄 요약

이 종합적 서베이는 현대 컴파일러 패ッチ 테스트 기법에 대한 포괄적인 분석을 제공하며, 컴파일러의 버그를 탐지하기 위해 테스트 프로그램 생성과 테스트 오라클 설계에 초점을 맞춘다. 주로 GCC, LLVM, DL 및 JVM 컴파일러를 포함한 메인스트림 및 도메인 특화 컴파일러에 관한 58개의 연구를 종합하여, 유효성, 다양성, 확장성 및 평가 측면에서 핵심 과제와 향후 연구 방향을 규명한다.

ABSTRACT

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.

연구 동기 및 목표

  • 현대적 및 도메인 특화 컴파일러를 위한 컴파일러 패치 테스트 분야의 최신 기술을 체계적으로 분석하기 위해.
  • 잠재적 컴파일러 버그를 유발하는 유효하고 다양한 테스트 프로그램을 생성하는 데 있어 핵심 과제를 규명하기 위해.
  • 컴pile된 바이너리에서 미세한 의미적 버그를 탐지할 수 있는 혁신적인 테스트 오라클 설계를 검토하기 위해.
  • 컴파일러 패치 툴의 확장성, 일반화 가능성 및 평가 프레임워크 측면에서 열려 있는 문제점을 부각하기 위해.
  • 컴파일러 정확성 및 패치 테스트 방법론 분야의 향후 연구 기회를 제시함으로써 연구자 및 실무자들을 안내하기 위해.

제안 방법

  • GCC, LLVM, JVM 및 DL, 그래픽 색션 컴파일러와 같은 도메인 특화 컴파일러를 중심으로 한 컴파일러 패치 테스트에 관한 58개의 고품질 연구 논문을 서베이하기 위해.
  • 문법 기반 생성(예: Csmith), 변형 기반 접근(예: EMI, Athena), 그리고 LLM 지원 합성 기법을 포함한 테스트 프로그램 생성 기법을 분류하고 분석하기 위해.
  • 소스 코드와 컴파일된 코드 간의 의미적 차이를 탐지하는 테스트 오라클 메커니즘을 평가하기 위해, 커버리지 기반 및 의미 인식 오라클을 포함한다.
  • 코드 커버리지 및 기능 기반 커버리지와 같은 다양성 메트릭을 평가하여 테스트 프로그램의 다양성과 효과성을 수량화하기 위해.
  • 기존 도구에서의 확장성 과제를 검토하기 위해, 하드코딩된 문법과 컴파일러 간 이식성을 위한 모듈화된 설계 부족을 고려한다.
  • 평가 관행을 검토하고, 표준화된 벤치마크와 공통 평가 프rotocol를 도입하여 새로운 패치 테스트 기법 간 공정한 비교를 가능하게 하기 위한 권고를 제시한다.

실험 결과

연구 질문

  • RQ1현대 컴파일러를 대상으로 유효하고 다양한 테스트 프로그램을 생성하는 데 있어 주요 과제는 무엇인가요?
  • RQ2기존의 테스트 오라클은 컴파일된 바이너리에서 미세한 의미 보존 버그를 어떻게 탐지합니까?
  • RQ3현재 컴파일러 패치 툴의 확장성과 일반화 가능성은 다양한 컴파일러 구성 요소와 프로그래밍 언어 간에 어떤 한계를 갖나요?
  • RQ4컴파일러 패치 툴의 평가 프레임워크를 어떻게 표준화하여 재현 가능성과 공정한 비교를 보장할 수 있나요?
  • RQ5대규모 언어 모델(Large Language Models)은 컴파일러 패치 테스트에서 문법 학습 및 테스트 프로그램 합성에 있어 수동 작업을 줄이는 데 어떤 역할을 할 수 있나요?

주요 결과

  • 컴파일러 패치 테스트는 심각한 버그를 드러내는 데 효과적이며, 이는 어설션 실패, 세그먼테이션 포트 오류, 잘 구성된 프로그램의 잘못된 번역을 포함한다.
  • 많은 컴파일러 버그는 C와 같은 언어의 정의되지 않은 행동에서 기인하며, 이러한 구조를 피하는 패치 툴은 더 높은 신뢰성의 테스트 생성을 달성한다.
  • 커버리지 기반 테스트와 기능 기반 다양성 메트릭은 잠재적 컴파일러 버그를 유도할 가능성을 높이는 데 효과적이다.
  • Athena와 EMI와 같은 변형 기반 도구는 피드백 기반 전략을 통합함으로써 이전 방법보다 다양성과 버그 탐지 능력에서 뚜렷한 승리를 거두었다.
  • 현재 도구들은 하드코딩된 문법과 모듈화된 설계 부족으로 인해 확장성에 뚜렷한 결함을 겪고 있어, 새로운 컴파일러로의 이식에 시간이 많이 소요된다.
  • LLM은 유효한 프로그램 생성과 언어 문법 학습에 잠재력을 보이지만, 복잡하고 타입 안정적이며 의미적으로 올바른 프로그램을 생성하는 데에는 아직 한계가 있으며, 향후 연구가 필요로 한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.