This paper presents two control-flow error recovery techniques, CFE Recovery
using Data-flow graph Consideration and CFE Recovery using Macro block-level
Check pointing. These techniques are proposed with regards to thread
interactions in the programs. These techniques try to moderate the high
memory and performance overheads of conventional control-flow checking
techniques. The proposed recovery techniques are composed of two phases of
control-flow error detection and recovery. These phases are designed by means
of inserting additional instructions into program at compile time considering
dependency graph, extracted from control-flow and data-flow dependencies
among basic blocks and thread interactions in the programs. In order to
evaluate the proposed techniques, five multithreaded benchmarks are utilized
to run on a multi-core processor. Moreover, a total of 10000 transient faults
have been injected into several executable points of each program. Fault
injection experiments show that the proposed techniques recover the detected
errors at-least for 91% of the cases.