Abstract:The design of complex embedded systems deployed in safety-critical or mission-critical applications mandates the availability of methods to validate the system dependability across the whole design flow. In this article we introduce a fault injection approach, based on loadable kernel modules and running under the Linux operating system, which can be adopted as soon as a running prototype of the systems is available. Moreover, for the purpose of decoupling dependability analysis from hardware availability, we … Show more
“…Kernel modules are objects that are introduced into the kernel and are capable of exporting kernel symbols that can be functions or data structures. An implementation of such modules can be seen in [33]: this approach provides on-demand access to the application's virtual address space, as well as to the processor's context, and it injects into the applications' data segment and code segment, omitting the elements of the kernel that provide services to the applications.…”
“…Kernel modules are objects that are introduced into the kernel and are capable of exporting kernel symbols that can be functions or data structures. An implementation of such modules can be seen in [33]: this approach provides on-demand access to the application's virtual address space, as well as to the processor's context, and it injects into the applications' data segment and code segment, omitting the elements of the kernel that provide services to the applications.…”
“…Fault injection techniques are widely used for software and system testing [13,20,21,22,24], ranging from testing the reliability of device drivers to testing operating systems, embedded systems and real-time systems [3,7,14,15,18,23,27].…”
Robustness testing is a crucial stage in the device driver development cycle. To accelerate driver robustness testing, effective fault scenarios need to be generated and injected without requiring much time and human effort. In this paper, we present a practical approach to automatic runtime generation and injection of fault scenarios for driver robustness testing. We identify target functions that can fail from runtime execution traces, generate effective fault scenarios on these target functions using a bounded trace-based iterative strategy, and inject the generated fault scenarios at runtime to test driver robustness using a permutation-based injection mechanism. We have evaluated our approach on 12 Linux device drivers and found 28 severe bugs. All these bugs have been further validated via manual fault injection. The results demonstrate that our approach is useful and efficient in generating fault scenarios for driver robustness testing with little manual effort.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.