论文标题

巫师:检测非易失性存储程序中的崩溃一致性错误

WITCHER : Detecting Crash Consistency Bugs in Non-volatile Memory Programs

论文作者

Fu, Xinwei, Kim, Wook-Hee, Shreepathi, Ajay Paddayuru, Ismail, Mohannad, Wadkar, Sunny, Min, Changwoo, Lee, Dongyoon

论文摘要

非易失性主内存(NVM)的出现可以开发碰撞一致的软件,而无需支付存储堆栈开销。但是,在存在挥发性缓存的情况下,构建正确的碰撞程序仍然非常具有挑战性。本文介绍了NVM软件的崩溃一致性错误检测器,即(1)可扩展 - 不遭受测试空间爆炸的困扰,(2)自动 - 不需要手动源代码注释,(3)精确 - 不产生误报。 Witcher首先要删除一组“可能不变的”,这些“可能不变”被认为是通过分析源代码和NVM访问痕迹来保持一致的崩溃。 Witcher会自动构成NVM图像,以模拟那些可能不一致(崩溃)违反可能不变的国家的图像。然后,Witcher通过在有或没有模拟崩溃的情况下比较程序执行的输出来执行“输出等效检查”。它验证了是否可能正在测试的可能不变的违规行为是一个真正的崩溃一致性错误。使用十个持久数据结构,两个现实世界服务器和Intel PMDK库中的五个示例代码的评估表明,Witcher优于最先进的工具。 Witcher发现了37(32个新的)崩溃一致性错误,这些错误均已确认。

The advent of non-volatile main memory (NVM) enables the development of crash-consistent software without paying storage stack overhead. However, building a correct crash-consistent program remains very challenging in the presence of a volatile cache. This paper presents WITCHER, a crash consistency bug detector for NVM software, that is (1) scalable -- does not suffer from test space explosion, (2) automatic -- does not require manual source code annotations, and (3) precise -- does not produce false positives. WITCHER first infers a set of "likely invariants" that are believed to be true to be crash consistent by analyzing source codes and NVM access traces. WITCHER automatically composes NVM images that simulate those potentially inconsistent (crashing) states violating the likely invariants. Then WITCHER performs "output equivalence checking" by comparing the output of program executions with and without a simulated crash. It validates if a likely invariant violation under test is a true crash consistency bug. Evaluation with ten persistent data structures, two real-world servers, and five example codes in Intel's PMDK library shows that WITCHER outperforms state-of-the-art tools. WITCHER discovers 37 (32 new) crash consistency bugs, which were all confirmed.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源