Jmvx: Fast Multi-threaded Multi-version Execution and Record-Replay for Managed Languages
David Schwartz, Ankith Kowshik, Luís Pina
Abstract
Multi-version execution (MVX) is a technique that deploys many equivalent versions of the same program — variants — as a single program, with direct application in important fields such as: security, reliability, analysis, and availability. MVX can be seen as “online Record/Replay (RR)”, as RR captures a program’s execution as a log stored on disk that can later be replayed to observe the same execution. Unfortunately, current MVX techniques target programs written in C/C++ and do not support programs written in managed languages, which are the vast majority of code written nowadays. This paper presents the design, implementation, and evaluation of Jmvx— a novel system for performing MVX and RR on programs written in managed languages. Jmvx supports programs written in Java by intercepting automatically identified non-deterministic methods, via a novel dynamic analysis technique, and ensuring that all variants execute the same methods and obtain the same data. Jmvx supports multi-threaded programs, by capturing synchronization operations in one variant, and ensuring all other variants follow the same ordering. We validated that Jmvx supports MVX and RR by applying it to a suite of benchmarks representative of programs written in Java. Internally, Jmvx uses a circular buffer located in shared memory between JVMs to enable fast communication between all variants, averaging 5% |47% performance overhead when performing MVX with multithreading support disabled|enabled, 8% |25% when recording, and 13% |73% when replaying.
Ask about this paper
Ask your agent about it.
Lune has read the top-tier papers around this one, so every answer names the papers it rests on.
Your agent calls
Lunesearch_papers
Free to start. No credit card required.
Terminal
Install the CLIlune papers get debbb19a-085c-4523-97ed-dd37b35c7f05Cited by top-tier papers2
- PropCov: Effective Coverage Reporting for Property-Based TestingJesse Coultas, Joseph Wiseman, Luís PinaISSTA 2026
- Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVMAo Li, Byeongjee Kang, Vasudev Vikram, Isabella Laybourn et al.OOPSLA 2025
Related papers
- Practically and Theoretically Efficient Garbage Collection for MultiversioningYuanhao Wei, Guy E. Blelloch, Panagiota Fatourou, Eric RuppertPPoPP 2023 · 1 citation
- History-Driven Test Program Synthesis for JVM TestingYingquan Zhao, Zan Wang, Junjie Chen, Mengdi Liu et al.ICSE 2022 · 51 citations
- Sharing is caring: secure and efficient shared memory support for MVEEsJonas Vinck, Bert Abrath, Bart Coppens, Alexios Voulimeneas et al.EuroSys 2022 · 8 citations
- Program Ingredients Abstraction and Instantiation for Synthesis-based JVM TestingYingquan Zhao, Zan Wang, Junjie Chen, Ruifeng Fu et al.CCS 2024 · 2 citations
- Rethink the Scan in MVCC DatabasesJong-Bin Kim, Kihwang Kim, Hyunsoo Cho, Jaeseon Yu et al.SIGMOD 2021 · 19 citations
