FIDe - Fault Injection via Debugging
| What is FIDe?
What is it Useful For?
How do I Get it?
Does it Really Work?
A Fault Injector?
How Can I Help?
|What is FIDe?
Fide is a software-based Fault Injector. It uses debug techniques to simulate errors and failures, as if a hardware fault has occurred, while executing an application. Thus one can observe the fault coverage, computational costs of recovering, and the behavior of the application in the presence of faults.
It intercepts system calls requested by the application and can manipulate parameters passed to a given system call or the results of this system call. It can also change value of registers and memory content. This way errors like memory corruption and disk errors can be simulated in details.
The manipulation of system calls is based on user defined rules. This rule set is called scenario. The rules are divided in main_rules, decision_rules and action_rules.
MAIN_RULES define which syscall must be observed. A scenario may have several main_rules.
DECISION_RULES define whether the injection will happen in the beginning or in the end of a syscall and specify when the fault will be injected. These rules can be time based (after X seconds, each X seconds, once after X seconds, during X seconds), flow based (after X calls, each X calls, once after X calls, next X calls) or triggered by the value of a register. A decision_rule can be compound by serveral nested decision_rules.
ACTION_RULES define the way injections will be performed. An action_rule can act on registers, memory content, parameters (memory content pointed by registers) and the user struct of the target application.
As all the interaction between applications and the operating systems and most of interaction with the underlying hardware is done through system calls, this approach is really powerful and flexible.
FIDe doesn't need the source code of the application under test.
The scenarios can be easily reused and don't depend on applications.
It was originally written to validate recovering techniques and mechanisms used by comercial DBMS but proved be flexible enough to test other Fault Tolerance approaches used on applications and even to test ordinary applications.
Everyone who needs/wants to test an application (regardless source code availability) can benefit from FIDe.
Besides the code is a bit ugly, it works fine. The design of FIDe has changed several times since it was created. Mainly because of performance related issues.
FIDe is GPLed.
Instructions to get the CVS tree are available here. One can browse code online, following the same link.
"It works for me"(tm)
In my MSc thesis I used FIDe to validate the approach of fault injection via debugging techniques. It worked like a charm.
Two other friends used FIDe as one of the fault injection tools on their experiments, part of their thesis. They both were validating recovering techniques used in comercial DBMS.
"I was young and was in need for the money..."
This tool is part of my MSc thesis, a concept proof, and worked very fine for this purpose, besides hairy coded.
If you want to help, you can do it in several ways. You can help coding, using, suggesting, pointing typos and english errors (you may have noticed my english is awful...) and so on.
This page will be soon rewritten, in a more clear (and bugless) language and I will publish translations of some papers I wrote originally in brazilian portuguese.