CrossLangFuzzer: 교차 언어 JVM 컴파일러의 차분 테스트 (Differential Testing)
요약
교차 언어 JVM 컴파일 과정에서 발생하는 오컴파일 오류를 탐지하기 위한 차분 테스트 프레임워크 CrossLangFuzzer를 제안합니다. Kotlin IR을 활용해 테스트 프로그램을 합성하고 변이 연산자를 적용하여 다양한 JVM 컴파일러의 버그를 성공적으로 발견했습니다.
핵심 포인트
- 교차 언어 JVM 컴파일을 위한 최초의 차분 테스트 프레임워크 제시
- Kotlin IR 기반의 테스트 프로그램 합성 및 7가지 변이 연산자 적용
- 주요 JVM 컴파일러에서 총 32개의 신규 버그 발견
- 오픈 소스로 공개되어 연구 및 개발에 활용 가능
현대의 JVM 소프트웨어는 Java, Kotlin, Groovy, Scala와 같은 여러 프로그래밍 언어를 단일 애플리케이션 내에 점점 더 많이 통합하고 있습니다. 이러한 상호 운용성 (interoperability)을 지원하려면 JVM 컴파일러가 언어 경계 간의 미묘한 의미론적 차이 (semantic differences)를 조정하면서 교차 언어 컴파일 (cross-language compilation)을 수행해야 합니다. 이 과정에서의 오류는 심각한 오컴파일 (miscompilations)으로 이어질 수 있지만, 기존의 컴파일러 테스트 기술은 고립된 단일 언어 컴파일에만 전적으로 집중하고 있습니다. 이러한 격차를 해소하기 위해, 우리는 교차 언어 JVM 컴파일을 위한 최초의 차분 테스트 (differential testing) 프레임워크인 CrossLangFuzzer를 제시합니다. CrossLangFuzzer는 Kotlin 컴파일러의 통합 중간 표현 (Intermediate Representation, IR)을 활용하여 교차 언어 테스트 프로그램을 합성합니다. 나아가 생성된 테스트 프로그램을 다양화하고 버그 발견 능력을 향상시키기 위해 7가지 변이 연산자 (mutation operators)를 적용합니다. 5개의 주요 JVM 컴파일러 최신 버전에 대해 평가한 결과, CrossLangFuzzer는 Kotlin에서 15개, Groovy에서 4개, Scala 3에서 7개, Scala 2에서 2개, Java에서 4개를 포함하여 총 32개의 확인된 버그를 발견했습니다. CrossLangFuzzer는 https://github.com/XYZboom/CrossLangFuzzer 에서 오픈 소스로 제공됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기