Instruction-level error injection analyses aim to find instructions where errors often lead to unacceptable outcomes like Silent Data Corruptions (SDCs). These analyses require significant time, which is especially problematic if developers wish to regularly analyze software that evolves over time. We present FastFlip, a combination of empirical error injection and symbolic SDC propagation analyses that enables fast, compositional error injection analysis of evolving programs. FastFlip calculates how SDCs propagate across program sections and correctly accounts for unexpected side effects that can occur due to errors. Using FastFlip, we analyze five benchmarks, plus two modified versions of each benchmark. FastFlip speeds up the analysis of incrementally modified programs by $3.2\times$ (geomean). FastFlip selects a set of instructions to protect against SDCs that minimizes the runtime cost of protection while protecting against a developer-specified target fraction of all SDC-causing errors.
翻译:指令级错误注入分析旨在定位那些错误常导致不可接受结果(如静默数据损坏)的指令。此类分析耗时显著,尤其当开发者需要定期分析随时间演变的软件时,这一局限性尤为突出。我们提出FastFlip——一种结合经验性错误注入与符号化静默数据损坏传播分析的方法,能够对演化中的程序实现快速组合式错误注入分析。FastFlip可计算静默数据损坏在程序段间的传播机制,并正确解释因错误可能产生的非预期副作用。通过FastFlip,我们分析了五个基准程序及其各自对应的两个修改版本。FastFlip将增量修改程序的分析速度提升至3.2倍(几何平均值)。该方法能选取一组需防护静默数据损坏的指令集,在满足开发者指定的静默数据损坏错误占比防护目标的前提下,最小化防护机制的运行时开销。