This particular bug was provoked when I pushed a small commit removing some long-dead code. Other details can be re-computed at replay time, keeping the recording size manageable. This means that the recording doesn’t need to save all the details of the program’s execution, but only the nondeterministic operations: that is, the results of system calls and a few special instructions like RDTSC. The technology relies on the fact that most computation is deterministic: that is, the outcome only depends on the state of the program’s registers and memory. If the program crashes on an incorrect value you can set a watchpoint on the location of the value and run the program backwards to see where the incorrect value came from. You run your buggy program under LiveRecorder and get a recording of its execution, which you can then replay in UDB (the Undo debugger), allowing you to run it forwards and backwards and jump to any point in the execution history to examine the registers and memory at that point. Undo’s product LiveRecorder is a software record-and-replay technology. I’m writing it up while the details are still fairly clear in my memory and I have access to the relevant debugging transcripts. ![]() This is a write-up of a bug in Undo’s software replay technology that I diagnosed and fixed. ◀ Suicide on Junction Road Station ✴ ✴ The butler did it ▶
0 Comments
Leave a Reply. |