DESIL:在 MLIR 编译器基础设施中检测潜在问题(即“无声的错误”或漏洞)

时间:2025年11月10日
来源:Proceedings of the ACM on Programming Languages

编辑推荐:

MLIR编译器通过DESIL技术实现静默漏洞检测,采用UB消除规则和优化转换路径提升效率,结合差分测试生成多样化可执行文件,成功检测23个静默漏洞和19个崩溃漏洞。

广告
   X   

摘要

MLIR(多层中间表示)编译器基础设施为编程语言和领域特定语言提供了一个高效的抽象层次框架。近年来,它受到了广泛关注,并已被应用于多个领域,例如深度学习编译器的构建。最近,提出了几种MLIR编译器模糊测试技术,如MLIRSmith和MLIRRod。然而,这些技术都无法检测到“静默错误”,即那些不会引发任何明显问题的错误优化。检测静默错误的难点主要源于两个方面:(1) 无未定义行为程序生成:生成不存在未定义行为的程序,以满足编译器优化所需的非未定义行为(UB)假设;(2) 降低优化复杂度:将给定的MLIR程序转换为可执行形式,并通过合适的优化路径减少不必要的优化步骤,从而提高模糊测试的效率。为了解决上述问题,我们提出了DESIL。DESIL通过基于MLIR文档定义一组消除未定义行为的规则,并将其应用于输入程序来实现静默错误的检测。为了将MLIR程序中的不同方言转换为可执行形式,DESIL设计了一种优化路径策略。此外,DESIL还结合了差分测试技术来进行静默错误的检测,并在编译过程中引入了基于操作类型的优化推荐策略,以生成多样化的可执行文件。我们将DESIL应用于最新版本的MLIR编译器基础设施,检测到了23个静默错误和19个导致程序崩溃的错误,其中17个错误已被确认或修复。

生物通微信公众号
微信
新浪微博


生物通 版权所有