Vinter: Automatic Non-Volatile Memory Crash Consistency Testing for Full Systems

  • Autor:

    Samuel Kalbfleisch, Lukas Werling, Frank Bellosa

  • Quelle:

    2022 USENIX Annual Technical Conference. July 11–13, 2022

  • Non-volatile memory (NVM) is a new byte-addressable storage technology that is part of the processor's memory hierarchy. NVM is often exposed to applications via an in-kernel file system. To prevent data loss in the case of crashes, the file system implementation needs to be crash-consistent. Achieving crash consistency is difficult however, as special primitives need to be inserted at appropriate places in the program to ensure persistency in the presence of volatile caches.

    We introduce Vinter, a new approach to automated NVM crash consistency testing designed for full systems, including unmodified kernel software such as file systems. By tracing NVM accesses of a full system via dynamic binary translation, we capture interactions between user and kernel space code. With such traces, our system efficiently generates relevant crash states using a heuristic that determines NVM locations significant for crash consistency. Finally, it extracts the semantic representation of each crash state. This makes the automatic detection of operation-spanning violations of crash consistency properties such as atomicity feasible. Our approach further aids in fixing detected bugs by representing how bugs originate from simulated crashes which are annotated by trace metadata.

    Our evaluation on NVM file systems uncovers several previously unknown bugs, including bugs in the state-of-the-art file systems NOVA and NOVA-Fortis that lead to atomicity violations and data loss.


    @inproceedings {280774,
    author = {Samuel Kalbfleisch and Lukas Werling and Frank Bellosa},
    title = {Vinter: Automatic {Non-Volatile} Memory Crash Consistency Testing for Full Systems},
    booktitle = {2022 USENIX Annual Technical Conference (USENIX ATC 22)},
    year = {2022},
    isbn = {978-1-939133-29-56},
    address = {Carlsbad, CA},
    pages = {933--950},
    url = {},
    publisher = {USENIX Association},
    month = jul,