Using Deterministic Replay for Software Fault Injection
Autor: | P. M. Dovgalyuk, Y. V. Markin |
---|---|
Jazyk: | English<br />Russian |
Rok vydání: | 2018 |
Předmět: | |
Zdroj: | Труды Института системного программирования РАН, Vol 26, Iss 2, Pp 119-136 (2018) |
Druh dokumentu: | article |
ISSN: | 2079-8156 2220-6426 |
DOI: | 10.15514/ISPRAS-2014-26(2)-5 |
Popis: | This paper presents method of improving software fault injection by using deterministic replay. Fault injection and fuzzing are the methods of testing used for checking code coverage quality, improving error handling, and robustness testing. Fuzzing can hardly be applied for stateful communication protocols because of program state could change when restarting an application. The main idea of our method is to inject faults while replaying program deterministically. Deterministic replay requires program execution recording for latter replaying. Recorded log includes user input, incoming network packets, USB input, and hardware timers. During replay we read these events from the log and put them back into the simulator instead of reading inputs or receiving packets from the network. After injecting the fault in replay mode the program execution is different. It means that we should stop the replaying and start normal program execution from that program state. During the execution we simulate all hardware timers to make this mode switching imperceptible to the program. With the help of deterministic replay we can accelerate system initialization, eliminate non-deterministic data sources effect, and simplify environment setup, because the whole program execution before injecting fault is recorded. On the basis of the method the network fuzzer was built. The fuzzer modifies selected network packet saved during session recording and sends it back into the simulator. This phase is repeated from the same program state until the bug in the program was found. |
Databáze: | Directory of Open Access Journals |
Externí odkaz: |