paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Detecting JVM JIT Compiler Bugs via Exploring Two-Dimensional Input Spaces

通过探索二维输入空间检测 JVM JIT 编译器缺陷
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)2023匹配度 3/10 · 论文属于编译器/JVM 测试与模糊测试方向,虽与 PL/程序分析领域相邻,但不涉及用户核心关注的 LLM/Agent 与静态分析、形式化验证、浮点程序分析或贝叶斯程序分析。引用 21 inbox
Haoxiang Jia, Ming Wen, Zifan Xie, Xiaochen Guo, Rongxin Wu, Maolin Sun, Kang Chen, Hai Jin
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:提出 JOpFuzzer,沿程序种子与优化选项两个维度引导模糊测试,有效检测 JVM JIT 编译器缺陷。

JIT 编译器为日益复杂的大规模 Java 程序提供运行时优化,但也不可避免地引入各类缺陷,这些缺陷逐年增多且后果严重。为帮助设计高效且有效的 JIT 缺陷检测技术,作者首先开展实证研究,分析 JIT 编译器缺陷的特征及其触发测试用例的规律。受此启发,论文提出 JOpFuzzer:它不仅在传统维度上生成新种子,还沿着优化选项这一新维度搜索多样化的编译配置;通过学习代码特征与优化选项之间的相关性来指导种子变异与选项探索;并利用可反映程序执行信息的 profile 数据引导模糊测试过程。这些设计使 JOpFuzzer 能够有效且高效地探索二维输入空间。广泛评估表明,JOpFuzzer 在代码覆盖率上优于现有最先进方法,并在 OpenJDK 中检测出 41 个缺陷,其中 25 个已被开发者确认或修复。

问题
JVM JIT 编译器缺陷普遍存在且危害严重,而现有测试技术难以有效、高效地触发这类与优化相关的缺陷。
方法
先通过实证研究总结 JIT 缺陷及触发用例的特征,再提出 JOpFuzzer:在程序种子之外增加优化选项这一维度,学习代码特征与优化选项的相关性来指导种子变异和选项探索,并用 profile 数据引导模糊测试。
评估
在 OpenJDK 上与当前最先进方法比较代码覆盖率,并统计实际发现的缺陷数量及被开发者确认或修复的比例。
原文摘要(Abstract)

Java Virtual Machine (JVM) is the fundamental software system that supports the interpretation and execution of Java bytecode. To support the surging performance demands for the increasingly complex and large-scale Java programs, Just-In-Time (JIT) compiler was proposed to perform sophisticated runtime optimization. However, this inevitably induces various bugs, which are becoming more pervasive over the decades and can often cause significant consequences. To facilitate the design of effective and efficient testing techniques to detect JIT compiler bugs. This study first performs a preliminary study aiming to understand the characteristics of JIT compiler bugs and the corresponding triggering test cases. Inspired by the empirical findings, we propose JOpFuzzer, a new JVM testing approach with a specific focus on JIT compiler bugs. The main novelty of JOpFuzzer is embodied in three aspects. First, besides generating new seeds, JOpFuzzer also searches for diverse configurations along the new dimension of optimization options. Second, JOpFuzzer learns the correlations between various code features and different optimization options to guide the process of seed mutation and option exploration. Third, it leverages the profile data, which can reveal the program execution information, to guide the fuzzing process. Such nov-elties enable JOpFuzzer to effectively and efficiently explore the two-dimensional input spaces. Extensive evaluation shows that JOpFuzzer outperforms the state-of-the-art approaches in terms of the achieved code coverages. More importantly, it has detected 41 bugs in OpenJDK, and 25 of them have already been confirmed or fixed by the corresponding developers.

链接与引用

DOI 原文 · DBLP

BibTeX
@inproceedings{JiaWXGWSCJ23,
  title = {Detecting JVM JIT Compiler Bugs via Exploring Two-Dimensional Input Spaces},
  author = {Haoxiang Jia and Ming Wen and Zifan Xie and Xiaochen Guo and Rongxin Wu and Maolin Sun and Kang Chen and Hai Jin},
  booktitle = {ICSE},
  year = {2023},
  doi = {10.1109/icse48619.2023.00016}
}