Abstract:Soft error has a great influence on computing reliability of space devices and could result in silent data corruption (SDC), which means wrong outcomes of a program without any crash detected. As SDC-causing fault always propagates silently, it is very difficult to detect SDC. In this paper, an approach for detecting SDC is proposed by using program invariant. A program invariant is a set of properties of program. Normally, the invariant holds during runtime. But when soft error occurs, the invariant is often violated due to the impact of soft error. Based on this principle, invariant-based asserts are inserted into source code. Once an exception is thrown by an assert, it indicates that soft error is detected. By analyzing the propagation of the fault that leads to SDC, the locations where asserts are embedded are selected and then invariants are extracted. Some of the invariants are converted to asserts based on their permeability, which indicates the capabilities of detecting soft error. The proposed approach is evaluated by fault injection experiment which shows that it achieves high coverage with low overhead. The approach broadens the ways of protecting satellite system from soft error.