1. A method for analyzing a computer program, the method comprising: executing a computer program in a virtual machine; recording a log comprising non-deterministic events in the virtual machine's instruction stream; replaying the virtual machine's instruction stream at an analysis system using the log; and executing program analysis code at the analysis system during the replay, wherein a timing of the execution of the computer program in the virtual machine is based on confirmations generated by the analysis system.