arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2012.06086cs.SE
收藏

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

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

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

摘要:

非易失性主存储器(NVM)的出现使得能够在不支付存储堆栈开销的情况下开发崩溃一致性软件。然而,在存在易失性缓存的情况下,构建正确的崩溃一致性程序仍然非常具有挑战性。本文介绍了一种用于NVM软件的崩溃一致性错误检测器WITCHER,它具有(1)可扩展性-不会遭受测试空间爆炸,(2)自动-不需要手动源代码注释,(3)精确-不会产生误报。WITCHER首先通过分析源代码和NVM访问轨迹来推断一组被认为是真正的崩溃一致性的“可能不变量”。WITCHER自动组成NVM映像,模拟那些违反可能不变量的潜在不一致(崩溃)状态。然后WITCHER通过比较有和没有模拟崩溃的程序执行的输出来执行“输出等价性检查”。它验证在测试中可能的不变违反是否是真正的崩溃一致性错误。对10个持久性数据结构、两个实际服务器和英特尔PMDK库中的5个示例代码的评估表明,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.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑