Abstract: A computer system capable of a degree of fault tolerance is disclosed wherein a target software process is split into two instances, an advanced software process and a trailing software process. The advanced process runs ahead of the trailing process. Failure recognizing mechanisms are provided for detecting failure events experienced by the advanced instance of the process. If a failure is detected, fault-finding mechanisms are activated for identifying a position of a fault and attempting to fix the fault that led to the failure within the advanced process. After the advanced process successfully re-processes the previously failing part of its execution, the trailing software process is allowed to advance.