一句话:提出 C4,一个通过生成、模糊测试与执行 litmus 测试来检验真实 C 编译器原子并发编译行为的工具。
多核处理器普及使得原子动作并发的正确编译至关重要,但现有自动化编译器测试工作很少能检验真实世界编译器如何处理原子动作代码的编译。本文演示 C4,一个用于探索 GCC、LLVM 等真实 C 编译器并发行为的工具。C4 自动化了一条基于 litmus 测试的生成、模糊测试与执行的工作流。到目前为止,C4 已在 GCC 和 IBM XL 中发现两个新的控制流 bug,并复现了 GCC 4 中两个历史性的并发 bug,表明该工具能够有效暴露真实编译器在原子并发代码编译中的缺陷。
The correct compilation of atomic-action concurrency is vital now that multicore processors are ubiquitous. Despite much recent work on automated compiler testing, little existing tooling can test how real-world compilers handle compilation of atomic-action code. We demonstrate C4, a tool for exploring the concurrency behaviour of real-world C compilers such as GCC and LLVM. C4 automates a workflow based on generating, fuzzing, and executing litmus tests. So far, C4 has found two new control-flow bugs in GCC and IBM XL, and reproduced two historic concurrency bugs in GCC 4.
DOI 原文 ·
@inproceedings{paperbot6671,
title = {C4: the C compiler concurrency checker},
author = {Matt Windsor and Alastair F. Donaldson and John Wickerson},
booktitle = {ISSTA},
year = {2021},
doi = {10.1145/3460319.3469079}
}