Soft-error detection through software fault-tolerance techniques