一句话:提出代表性测试策略,仅探索少量代表性崩溃状态,在保证覆盖率的同时扩展到大应用。
崩溃一致性对必须持久化数据的应用至关重要,但操作数增长导致崩溃状态空间指数爆炸。现有剪枝方法或依赖已知错误模式、限制探索以提升效率,却牺牲覆盖率并遗漏深层 bug;或跳过相同崩溃状态,仍难以扩展到大应用。本文提出 representative testing:观察到不同崩溃状态的一致性往往相关,即使状态不完全相同,因而可用基于更新行为的启发式近似选取一小组代表性崩溃状态,并实现工具 Pathfinder。作者在 POSIX 与 MMIO 应用上评估,跨 8 个生产就绪系统发现 18 个 bug(7 个新 bug),比现有最优系统在 POSIX 应用中发现多 4 倍、在 MMIO 应用中发现多 8 倍 bug,且扩展性更好。
Crash consistency is essential for applications that must persist data. Crash-consistency testing has been commonly applied to find crash-consistency bugs in applications. The crash-state space grows exponentially as the number of operations in the program increases, necessitating techniques for pruning the search space. However, state-of-the-art crash-state space pruning is far from ideal. Some techniques look for known buggy patterns or bound the exploration for efficiency, but they sacrifice coverage and may miss bugs lodged deep within applications. Other techniques eliminate redundancy in the search space by skipping identical crash states, but they still fail to scale to larger applications. In this work, we propose representative testing : a new crash-state space reduction strategy that achieves high scalability and high coverage. Our key observation is that the consistency of crash states is often correlated, even if those crash states are not identical. We build Pathfinder , a crash-consistency testing tool that implements an update behaviors-based heuristic to approximate a small set of representative crash states. We evaluate Pathfinder on POSIX-based and MMIO-based applications, where it finds 18 (7 new) bugs across 8 production-ready systems. Pathfinder scales more effectively to large applications than prior works and finds 4× more bugs in POSIX-based applications and 8× more bugs in MMIO-based applications compared to state-of-the-art systems.
@article{paperbot3204,
title = {Scalable and Accurate Application-Level Crash-Consistency Testing via Representative Testing},
author = {Yile Gu and Ian Neal and Jiexiao Xu and Shaun Christopher Lee and Ayman Said and Musa Haydar and Jacob Van Geffen and Rohan Kadekodi and Andrew Quinn and Baris Kasikci},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {OOPSLA1},
year = {2025},
doi = {10.1145/3720431}
}