“…FreeDA leverages Multi-Version Execution (MVE) [17,19,20,23,27,29,31,37,44,46,47] to run the native application concurrently with several DA versions (e.g., in parallel with Valgrind and compilersanitized versions), each in their own process. FreeDA leverages the record-replay strategy used in the second-generation of multiversion execution systems [28,29,44,46], by recording the results of system calls issued by the native version into an in-memory system-call buffer, while each DA version reads the results of its system calls from this buffer. This separation allows FreeDA to run the native version at full speed (minus the small time needed to write the results of system calls into a buffer), while each DA version operates at a lower speed in the background.…”