Abstract
Recent non-volatile memory technologies have enabled persistent memory (PM) and a new set of crash-consistent software (CCS) for PM. CCS developed for persistent memory ranges from kernel modules to user-space libraries and custom applications. However, ensuring crash consistency in CCS is difficult and error-prone. Due to the reordering by the hardware, programmers cannot test whether the order specified in the CCS will not result in an ordering that violates the crash consistency requirement.
We believe that there is an urgent need for developing a testing framework that helps programmers identify crash consistency bugs in their CCS. We propose PMTest (https://pmtest.persistentmemory.org), a crash consistency testing framework that is both flexible and fast. In the evaluation with eight programs, PMTest not only identified 45 synthetic crash consistency bugs but also detected 3 new bugs in a file system (PMFS) and in applications developed using a transactional library (PMDK), while on average being 7.1Ã faster than the state-of-the-art tool.