PMFuzz: test case generation for persistent memory programs
- 17 April 2021
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM) in Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
Abstract
The Persistent Memory (PM) technology combines the persistence of storage with the performance approaching that of DRAM. Programs taking advantage of PM must ensure data remains recoverable after a failure (e.g., power outage), and therefore, are susceptible to having crash consistency bugs that lead to incorrect recovery after a failure. Prior works have provided tools, such as Pmemcheck, PMTest, and XFDetector, that detect these bugs by checking whether the trace of PM accesses violates the program’s crash consistency guarantees. However, detection of crash consistency bugs highly depends on test cases—a bug can only be detected if the buggy program path has been executed. Therefore, using a test case generator is necessary to effectively detect crash consistency bugs. Fuzzing is a common test case generation approach that requires minimum knowledge about the program. We identify that PM programs have special requirements for fuzzing. First, a PM program maintains a persistent state on PM images. Therefore, the fuzzer needs to efficiently generate valid images as part of the test case. Second, these PM images can also be a result of a previous crash, which requires the fuzzer to generate crash images as well. Finally, PM programs can have various procedures but only those performing PM operations can lead to crash consistency issues. Thus, an efficient fuzzer should target those relevant regions. In this work, we provide PMFuzz, a test case generator for PM programs that meets these new requirements. Our evaluation shows that PMFuzz covers 4.6× more PM-related paths compared to AFL++, a widely-used fuzzer. Further, test cases generated by PMFuzz discovered 12 new real-world bugs in PM programs which have already been extensively tested by prior PM testing works.Keywords
This publication has 42 references indexed in Scilit:
- NVMcachedPublished by Association for Computing Machinery (ACM) ,2016
- High-Performance Transactions for Persistent MemoriesPublished by Association for Computing Machinery (ACM) ,2016
- A simpler, safer programming and execution model for intermittent systemsPublished by Association for Computing Machinery (ACM) ,2015
- AtlasPublished by Association for Computing Machinery (ACM) ,2014
- System software for persistent memoryPublished by Association for Computing Machinery (ACM) ,2014
- KilnPublished by Association for Computing Machinery (ACM) ,2013
- Exploring storage class memory with key value storesPublished by Association for Computing Machinery (ACM) ,2013
- From ARIES to MARSPublished by Association for Computing Machinery (ACM) ,2013
- Optimizing Checkpoints Using NVM as Virtual MemoryPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2013
- PinPublished by Association for Computing Machinery (ACM) ,2005