LLFI is an LLVM based fault injection tool, that injects faults into the LLVM IR of the application source code. The faults can be injected into specific program points, and the effect can be easily tracked back to the source code. Please refer to the paper below. NOTE: If you publish a paper using LLFI, please add it to PaperLLFI.bib
Changed profile.py and injectfault.py to no longer hang on large input
sizes, as discussed in DSL/LLFI Issue #67. The fix uses a Python3.3+
construct, the timeout parameter in popen.communicate().
The new version fails a few software tests, but since most of the
software tests failed before the changes, I don't really know whether
that's a problem. The new versions pass all non-software tests.
Note that this slightly changes the behavior of the injectfault script:
if the program times out, it will now place whatever output the program
created into the appropriate file, bracketed by a message that notes
that the program was killed by LLFI. To restore the old behavior (no
output on timeout), delete lines 171-173 and 177-179 in injectfault.py
and add if not program_timed_out: before the write to the outputFile.
Changed profile.py and injectfault.py to no longer hang on large input sizes, as discussed in DSL/LLFI Issue #67. The fix uses a Python3.3+ construct, the timeout parameter in popen.communicate().
The new version fails a few software tests, but since most of the software tests failed before the changes, I don't really know whether that's a problem. The new versions pass all non-software tests.
Note that this slightly changes the behavior of the injectfault script: if the program times out, it will now place whatever output the program created into the appropriate file, bracketed by a message that notes that the program was killed by LLFI. To restore the old behavior (no output on timeout), delete lines 171-173 and 177-179 in injectfault.py and add
if not program_timed_out:
before the write to the outputFile.