Brussels / 4 & 5 February 2017


Can strace make you fail?

strace syscall fault injection

strace is a diagnostic, debugging and instructional utility for Linux. It is used to monitor interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. In 2016, strace has been extended to tamper with tracees using syscall fault injection, making strace also a syscall fault injection tool, the only unprivileged userspace command-line runtime tool of this kind for Linux.

The last summer as a part of strace GSoC 2016 project Nahim El Atmani has implemented a prototype of syscall fault injection - a software testing technique used for improving test coverage of error handling code paths that might otherwise rarely be followed by introducing faults. Now the feature has finally been implemented and is a part of strace 4.15 released in December 2016.

In this talk the maintainer of strace will demonstrate the new feature, describe its implementation, and show examples of real bugs found with its help.


Photo of Dmitry Levin Dmitry Levin