1. A method comprising: programmatically detecting one or more in-line synchronization primitives in a computer program during execution of the computer program using dynamic binary compilation to detect the one or more in-line synchronization primitives in the computer program during the execution of the computer program; replacing each of the one or more in-line synchronization primitives in the computer program with a corresponding substitute synchronization primitive during execution of the computer program; executing at least one of the substitute synchronization primitives in a manner visible to an operating system; using the operating system to detect the execution of the at least one of the substitute synchronization primitives; storing information indicative of each of the detected substitute synchronization primitives in a log, wherein the information comprises an execution order of each of the detected substitute synchronization primitives and a result of each of the detected substitute synchronization primitives; determining that the execution of the computer program has failed at a point in time; and using the log to resume the execution of the computer program from the point in time by replaying the execution of the computer program in a manner that guarantees the execution order and the results of each of the detected substitute synchronization primitives as stored in the log.