Jmvx: Fast Multi-threaded Multi-Version eXecution and Record-Replay for Managed Languages
Multi-Version eXecution (MVX) is a technique that deploys many equivalent versions of the same program — variants — as a single program, with direct applications 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, 8%–25% when recording, and 13%–73% when replaying.
Wed 23 OctDisplayed time zone: Pacific Time (US & Canada) change
16:00 - 17:40 | Performance Analysis and Optimisation 2OOPSLA 2024 at IBR West Chair(s): Matthew Flatt University of Utah | ||
16:00 20mTalk | Jmvx: Fast Multi-threaded Multi-Version eXecution and Record-Replay for Managed Languages OOPSLA 2024 David Schwartz University of Illinois at Chicago, Ankith Kowshik University of Illinois Chicago, Luís Pina University of Illinois at Chicago DOI | ||
16:20 20mTalk | libLISA: Instruction Discovery and Analysis on x86-64 OOPSLA 2024 Jos Craaijo Open Universiteit, Freek Verbeek Open Universiteit & Virginia Tech, Binoy Ravindran Virginia Tech DOI | ||
16:40 20mTalk | Extending the C/C++ Memory Model with Inline Assembly OOPSLA 2024 Paulo Emílio de Vilhena Imperial College London, Ori Lahav Tel Aviv University, Viktor Vafeiadis MPI-SWS, Azalea Raad Imperial College London DOI | ||
17:00 20mTalk | TorchQL: A Programming Framework for Integrity Constraints in Machine Learning OOPSLA 2024 Aaditya Naik University of Pennsylvania, Adam Stein University of Pennsylvania, Yinjun Wu University of Pennsylvania, Mayur Naik University of Pennsylvania, Eric Wong DOI | ||
17:20 20mTalk | Verification of Neural Networks' Global RobustnessRemote OOPSLA 2024 DOI |