Idempotent I/O for safe time travel
Zoltan Somogyi

TL;DR
This paper introduces a low-overhead method to ensure I/O operations in logic programming debuggers are executed only once during time travel debugging, preventing duplicate or harmful I/O effects.
Contribution
The paper proposes a simple, efficient mechanism for idempotent I/O in logic programming debuggers, enabling safe backward jumps without repeated I/O actions.
Findings
The mechanism effectively prevents duplicate I/O during debugging.
Overhead of the method is low and manageable.
It enables practical debugging of I/O-intensive computations.
Abstract
Debuggers for logic programming languages have traditionally had a capability most other debuggers did not: the ability to jump back to a previous state of the program, effectively travelling back in time in the history of the computation. This ``retry'' capability is very useful, allowing programmers to examine in detail a part of the computation that they previously stepped over. Unfortunately, it also creates a problem: while the debugger may be able to restore the previous values of variables, it cannot restore the part of the program's state that is affected by I/O operations. If the part of the computation being jumped back over performs I/O, then the program will perform these I/O operations twice, which will result in unwanted effects ranging from the benign (e.g. output appearing twice) to the fatal (e.g. trying to close an already closed file). We present a simple mechanism…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Parallel Computing and Optimization Techniques · Embedded Systems Design Techniques
