3 ms·
That's exactly right Brian Hackett collaborated early on with ROC. Here are the basic principles of Replay (https://developer.mozilla.org/en-US/docs/Mozilla/Pr
by jasonlaster11 7y ago
That's exactly right
Brian Hackett collaborated early on with ROC. Here are the basic principles of Replay (https://developer.mozilla.org/en-US/docs/Mozilla/Projects/WebReplay https://developer.mozilla.org/en-US/docs/Mozilla/Projects/We...).
In a nutshell, replay records Firefox's OS system calls, so that that Firefox can read from the recording when replaying.
- gnufx 7y agoFor what it's worth, the DMTCP [1] user-space checkpoint/restore system does that (and more). C/R is a way of doing coarse batch-based reversible debugging, typically of distributed HPC programs, and FReD [2] is a(n unfortunately dead) reversible debugger using DMTCP record/replay. 1. http://dmtcp.sourceforge.net/ http://dmtcp.sourceforge.net/ 2. https://arxiv.org/abs/1212.5204 https://arxiv.org/abs/1212.5204
- jasonlaster11 7y agoThanks for sharing!
- jasonlaster11 7y agoFrom a user perspective, we are trying to focus less on rewind and step back and more on adding logging retroactively. The best way to think about this is when the user adds a logpoint, they'll immediately see the logs in the console. We hope that making logging much better is a great way to help people better understand the recording.
- dustingetz 7y agoadding log statements retroactively - that's awesome
- tropo 7y agoThis seems to mean that a recording done on x86_64 MacOS can't be played back on aarch64 Linux, which is a shame for something that apparently is for javascript debugging. Limitations like that are more understandable for rr, which is intended for use with native processes. It also looks like a maintenance burden which will increase the difficulty of supporting an OS for Firefox. Stuff like that causes Firefox to drop support for an OS, and it makes developers hesitant to add support for an OS. System calls can do all sorts of crazy stuff behind your back. Think of ioctl and fcntl. Just knowing what memory they modify is difficult. It's been lots of trouble for tools like strace and rr. Hopefully you won't encounter worse, like vfork and clone.
- saagarjha 7y agoI think WebKit has a similar feature, though it seems to work at a higher level than the one Firefox has (disclaimer: I haven’t used it, so I could be totally wrong). From what it looks like, Firefox hooks things at a much lower level and currently relies on some very Mac-specific features like Mach exception handlers (I’m actually curious as to how it works: is there a file or two I can glance at to skim the implementation of these?) Why perform the interception at this level? How do you plan to implement this on platforms that don’t have equivalent task APIs, e.g. Linux?