R2: An Application-Level Kernel for Record and Replay, OSDI 2008
Discussion lead: Shrainik Jain & Eddie Yan
Discuss the problem while recording and replaying “malloc” and “free” syscalls. How does R2 handle these? How does R2 deal with the situation where a R2 syscall allocate buffer in system space and the application may use the buffer in replay space?
What are the 2 possible event orders while replaying multithreaded applications in R2? Discuss the pros and cons of both.
What do you think about R2’s annotation language? Can you describe an example of a syscall where the annotations are not expressive enough?
One of the methods given for reducing the overhead of R2 is to change the “syscall layer” (for example from Win32 to SQLite)–is there a trade-off here or is the performance/overhead benefit available for free?
Provide a list of questions you would like to discuss in class. Feel free to provide any comments on the paper and related topics (e.g., which parts you like and which parts you find confusing).