Using abstract interpretation to correct synchronization faults