arrow
返回

CLower: Detecting Compiler Pessimization Bugs through Redundant Memory Accesses

delete2026-04-01
delete0
PRE
AI
X
Xu, Jianhao *
Z
Zhang, Kunbo
L
Lu, Kangjie
M
Mao, Bing
DOI:10.1145/3798250delete
delete原文链接
delete原文求助
delete分享
delete收藏
摘要

摘要

En 中文
编译器预期生成优化代码,但有时会引入悲观化(质量下降的冗余指令)。这些错误不仅导致性能开销,还通过引入意外的副作用(如冗余内存访问)扩大攻击面,而无需破坏编译正确性。现有错误检测方法既未针对此类安全敏感的悲观化设计,也难以有效识别。本文提出CLower,一种新颖的黑盒方法,通过冗余内存访问自动检测编译器悲观化。CLower的核心洞见是:与源代码相比,完全优化的二进制文件中任何额外的全局内存访问均指示悲观化。为可靠区分编译器引入的冗余与源代码级别的冗余,我们生成随机C程序,其中每个全局变量具有预定且可控的内存访问次数。CLower随后执行插桩后的二进制文件,验证编译过程中是否引入了多余访问。我们将CLower应用于GCC和LLVM,报告了23个独特错误(GCC 21个,Clang 2个),其中16个被确认为新的悲观化错误。我们的评估表明,CLower能准确检测多样化的、影响显著的悲观化错误,其中多数(75%)也体现在堆分配对象上,证明底层编译器缺陷具有普遍性,不限于全局内存。此外,我们识别出编译器优化与悲观化错误之间的系统性冲突,导致许多此类错误在编译器版本中保持隐藏。本研究揭示了编译器悲观化这一未充分探索领域,并提供实用工具以提升编译器质量。
Keyword:
Compiler Pessimization
Randomized Testing

期刊

P
Proceedings of the ACM on Programming Languages-PACMPL
IF:
2.8
论文数:
308
被引数:
4.7K

机构

S
swiss federal institutes of technology domain
学者数:
9.0W
论文数: 8.0W
被引数: 163
S
southeast university - china
学者数:
5.3W
论文数: 4.9W
被引数: 57
N
nanjing university
学者数:
7.8W
论文数: 5.6W
被引数: 87
E
ecole polytechnique federale de lausanne
学者数:
1.0K
论文数: 507
被引数: 0
学者 查看更多机构
引用论文

引用论文

暂无论文信息