To efficiently harden programs susceptible to Silent Data Corruptions (SDCs), developers need to invoke error injection analyses to find particularly vulnerable instructions and then selectively protect them using appropriate compiler-level SDC detection mechanisms. However, these error injection analyses are both expensive and monolithic: they must be run from scratch after even small changes to the code, such as optimizations or bug fixes. This high recurring cost keeps such software-directed resiliency analyses out of standard software engineering practices such as regression testing.
We present FastFlip, the first approach tailored to incorporate resiliency analysis seamlessly within the iterative software development workflow. FastFlip combines empirical error injection and symbolic SDC propagation analyses to enable fast and compositional error injection analysis of evolving programs. When developers modify a program, FastFlip often has to re-analyze only the modified program sections. We analyze five benchmarks plus two modified versions of each benchmark using FastFlip. FastFlip’s compositional nature speeds up the analysis of the incrementally modified versions by 3.2x (geomean) and up to 17.2x. FastFlip selects a set of instructions to protect against SDCs that minimizes the runtime protection cost while protecting against a developer-specified target fraction of all SDC-causing errors.