{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T22:17:06Z","timestamp":1770243426920,"version":"3.49.0"},"reference-count":49,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","license":[{"start":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T00:00:00Z","timestamp":1728345600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"NSF","award":["CCF-2227183"],"award-info":[{"award-number":["CCF-2227183"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,10,8]]},"abstract":"<jats:p>Multi-version execution (MVX) is a technique that deploys many equivalent versions of the same program \u2014 variants \u2014 as a single program, with direct application in important fields such as: security, reliability, analysis, and availability. MVX can be seen as \u201conline Record\/Replay (RR)\u201d, as RR captures a program\u2019s 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.<\/jats:p>\n                  <jats:p>This paper presents the design, implementation, and evaluation of Jmvx\u2014 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.<\/jats:p>","DOI":"10.1145\/3689769","type":"journal-article","created":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T03:23:04Z","timestamp":1728357784000},"page":"1641-1669","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Jmvx: Fast Multi-threaded Multi-version Execution and Record-Replay for Managed Languages"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0003-9836-3378","authenticated-orcid":false,"given":"David","family":"Schwartz","sequence":"first","affiliation":[{"name":"University of Illinois, Chicago, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0009-8788-0912","authenticated-orcid":false,"given":"Ankith","family":"Kowshik","sequence":"additional","affiliation":[{"name":"University of Illinois, Chicago, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4585-5259","authenticated-orcid":false,"given":"Lu\u00eds","family":"Pina","sequence":"additional","affiliation":[{"name":"University of Illinois, Chicago, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,10,8]]},"reference":[{"key":"e_1_3_1_2_2","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-021-00644-w"},{"key":"e_1_3_1_3_2","unstructured":"David Bacon Joshua Bloch Jeff Bogda Cliff Click Paul Haahr Doug Lea Tom May Jan-Willem Maessen JD Mitchell Kelvin Nilsen et al. 2000. The \u201cdouble-checked locking is broken\u201d declaration. https:\/\/www.cs.umd.edu\/~pugh\/java\/memoryModel\/DoubleCheckedLocking.html. Accessed: 2023-11-15."},{"key":"e_1_3_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/277652.277734"},{"key":"e_1_3_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/2714064.2660209"},{"key":"e_1_3_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/1995896.1995950"},{"key":"e_1_3_1_7_2","first-page":"17:1","volume-title":"32nd European Conference on Object-Oriented Programming (ECOOP 2018) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 109)","author":"Bell Jonathan","year":"2018","unstructured":"Jonathan Bell and Lu\u00eds Pina. 2018. CROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 109), Todd Millstein (Ed.). Schloss Dagstuhl -Leibniz-Zentrum f\u00fcr Informatik, Dagstuhl, Germany, 17:1-17:31. https:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2018.17 10.4230\/LIPIcs.ECOOP.2018.17"},{"key":"e_1_3_1_8_2","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486836"},{"key":"e_1_3_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/1133255.1134000"},{"key":"e_1_3_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"e_1_3_1_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/2807426.2807434"},{"key":"e_1_3_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509519"},{"key":"e_1_3_1_13_2","article-title":"ASM: A code manipulation tool to implement adaptable systems","author":"Bruneton Eric","year":"2002","unstructured":"Eric Bruneton, Romain Lenglet, and Thierry Coupaye. 2002. ASM: A code manipulation tool to implement adaptable systems. In In Adaptable and extensible component systems.","journal-title":"In Adaptable and extensible component systems"},{"key":"e_1_3_1_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/281035.281041"},{"key":"e_1_3_1_15_2","volume-title":"Intel 64 and IA-32 Architectures Software Developer\u2019s Manual - Volume 3B","author":"Intel Corporation","year":"2007","unstructured":"Intel Corporation. 2007. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual - Volume 3B. Intel Corporation."},{"key":"e_1_3_1_16_2","volume-title":"In 15th USENIX Security Symposium (USENIX Security 06)","author":"Cox Benjamin","year":"2006","unstructured":"Benjamin Cox and David Evans. 2006. N-Variant Systems: A Secretless Framework for Security through Diversity. In 15th USENIX Security Symposium (USENIX Security 06). USENIX Association, Vancouver, B.C. Canada. https:\/\/www.usenix.org\/conference\/15th-usenix-security-symposium\/n-variant-systems-secretless-framework-security-through"},{"key":"e_1_3_1_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/2786805.2803179"},{"key":"e_1_3_1_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/1060289.1060309"},{"key":"e_1_3_1_19_2","doi-asserted-by":"publisher","DOI":"10.5555\/2636997"},{"key":"e_1_3_1_20_2","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486869"},{"key":"e_1_3_1_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/2775054.2694390"},{"key":"e_1_3_1_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/1882291.1882361"},{"key":"e_1_3_1_23_2","unstructured":"Kohlsch\u00fctter Search Intelligence. [n. d.]. junixsocket: Unix Domain Sockets in Java (AF_UNIX). https:\/\/github.com\/kohlschutter\/junixsocket. Accessed: 2023-11-15."},{"key":"e_1_3_1_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/DSN.2016.46"},{"key":"e_1_3_1_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/1811099.1811057"},{"key":"e_1_3_1_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/359545.359563"},{"key":"e_1_3_1_27_2","unstructured":"Dmitry V. Levin et al. [n. d.]. strace - linux syscall tracer. https:\/\/strace.io Accessed: 2023-11-15."},{"key":"e_1_3_1_28_2","doi-asserted-by":"publisher","DOI":"10.1109\/FTCSH.1995.532621"},{"key":"e_1_3_1_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040336"},{"key":"e_1_3_1_30_2","volume-title":"Proceedings of the 21st USENIX Conference on Security Symposium (Bellevue, WA) (Security\u201912)","author":"Maurer Matthew","year":"2012","unstructured":"Matthew Maurer and David Brumley. 2012. TACHYON: Tandem Execution for Efficient Live Patch Testing. In Proceedings of the 21st USENIX Conference on Security Symposium (Bellevue, WA) (Security\u201912). USENIX Association, USA, 43."},{"key":"e_1_3_1_31_2","unstructured":"Robert O\u2019Callahan Chris Jones Albert Noll Nathan Froyd Nimrod Partush and Kyle Huey. [n. d.]. Engineering Record And Replay For Deployability. ([n. d.]) 377-389."},{"key":"e_1_3_1_32_2","first-page":"2","volume-title":"Book Title: Proceedings of the 8th annual IEEE\/ACM international symposium on code generation and optimization","author":"Patil Harish","year":"2010","unstructured":"Harish Patil, Cristiano Pereira, Mack Stallcup, Gregory Lueck, and James Cownie. 2010. PinPlay: a framework for deterministic replay and reproducible analysis of parallel programs (CGO \u201910). ACM, 2-11. https:\/\/doi.org\/10.1145\/1772954.1772958 10.1145\/1772954.1772958 Book Title: Proceedings of the 8th annual IEEE\/ACM international symposium on code generation and optimization."},{"key":"e_1_3_1_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/3203217.3203237"},{"key":"e_1_3_1_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304063"},{"key":"e_1_3_1_35_2","volume-title":"Proceedings of the USENIX Annual Technical Conference (Santa Clara, CA, USA) (USENIX ATC \u201917)","author":"Pina Lu\u00eds","year":"2017","unstructured":"Lu\u00eds Pina, Daniel Grumberg, Anastasios Andronidis, and Cristian Cadar. 2017. A DSL Approach to Reconcile Equivalent Divergent Program Executions. In Proceedings of the USENIX Annual Technical Conference (Santa Clara, CA, USA) (USENIX ATC \u201917). USENIX."},{"key":"e_1_3_1_36_2","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660220"},{"key":"e_1_3_1_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/361011.361073"},{"key":"e_1_3_1_38_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.future.2015.12.003"},{"key":"e_1_3_1_39_2","first-page":"26:1","volume-title":"37th European Conference on Object-Oriented Programming (ECOOP 2023) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263)","author":"Rumsevicius Ugnius","year":"2023","unstructured":"Ugnius Rumsevicius, Siddhanth Venkateshwaran, Ellen Kidane, and Lu\u00eds Pina. 2023. Sinatra: Stateful Instantaneous Updates for Commercial Browsers Through Multi-Version eXecution. In 37th European Conference on Object-Oriented Programming (ECOOP 2023) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263), Karim Ali and Guido Salvaneschi (Eds.). Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik, Dagstuhl, Germany, 26:1-26:29. https:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2023.26 10.4230\/LIPIcs.ECOOP.2023.26"},{"key":"e_1_3_1_40_2","doi-asserted-by":"publisher","DOI":"10.1145\/1519065.1519071"},{"key":"e_1_3_1_41_2","unstructured":"David Schwartz Ankith Kowshik and Lu\u00eds Pina. 2024. Artifact for Jmvx: Fast Multi-threaded Multi-Version eXecution and Record-Replay for Managed Languages. https:\/\/doi.org\/10.5281\/zenodo.12637140 10.5281\/zenodo.12637140"},{"key":"e_1_3_1_42_2","unstructured":"David Schwartz Ankith Kowshik and Lu\u00eds Pina. 2024. Source for Jmvx prototype. https:\/\/github.com\/bitslab\/Jmvx"},{"key":"e_1_3_1_43_2","doi-asserted-by":"publisher","DOI":"10.5555\/517257"},{"key":"e_1_3_1_44_2","volume-title":"Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design)","author":"Smith Jim","year":"2005","unstructured":"Jim Smith and Ravi Nair. 2005. Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA."},{"key":"e_1_3_1_45_2","unstructured":"Martin D. Thompson Dave Farley Michael Barker Patricia Gee and Andrew Stewart. 2011. Disruptor : High performance alternative to bounded queues for exchanging data between concurrent threads. https:\/\/lmax-exchange.github.io\/disruptor\/disruptor.html"},{"key":"e_1_3_1_46_2","unstructured":"undo.io. [n. d.]. UndoDB reversible debugging tool for Linux and Android. https:\/\/undo.io\/resources\/undodb-reversible-debugging-tool-linux-and-android. Accessed: 2023-11-15."},{"key":"e_1_3_1_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/3064176.3064178"},{"key":"e_1_3_1_48_2","first-page":"167","volume-title":"In 2016 USENIX Annual Technical Conference (USENIX ATC 16)","author":"Volckaert Stijn","year":"2016","unstructured":"Stijn Volckaert, Bart Coppens, Alexios Voulimeneas, Andrei Homescu, Per Larsen, Bjorn De Sutter, and Michael Franz. 2016. Secure and Efficient Application Monitoring and Replication. In 2016 USENIX Annual Technical Conference (USENIX ATC 16). USENIX Association, Denver, CO, 167-179. https:\/\/www.usenix.org\/conference\/atc16\/technical-sessions\/presentation\/volckaert"},{"key":"e_1_3_1_49_2","article-title":"Retrace: Collecting execution trace with virtual machine deterministic replay","author":"Xi Min","year":"2007","unstructured":"Min Xi, Vyacheslav Malyugin, Jeffrey Sheldon, Ganesh Venkitachalam, and Boris Weissman. 2007. Retrace: Collecting execution trace with virtual machine deterministic replay. In Proceedings of the Third Annual Workshop on Modeling, Benchmarking and Simulation (MoBS 2007).","journal-title":"Proceedings of the Third Annual Workshop on Modeling, Benchmarking and Simulation (MoBS 2007)"},{"key":"e_1_3_1_50_2","first-page":"271","volume-title":"In 2017 USENIX Annual Technical Conference (USENIX ATC 17)","author":"Meng Xu","year":"2017","unstructured":"Meng Xu, Kangjie Lu, Taesoo Kim, and Wenke Lee. 2017. Bunshin: Compositing Security Mechanisms through Diversification. In 2017 USENIX Annual Technical Conference (USENIX ATC 17). USENIX Association, Santa Clara, CA, 271-283. https:\/\/www.usenix.org\/conference\/atc17\/technical-sessions\/presentation\/xu-meng"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689769","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3689769","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T09:02:59Z","timestamp":1770195779000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689769"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,10,8]]},"references-count":49,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2024,10,8]]}},"alternative-id":["10.1145\/3689769"],"URL":"https:\/\/doi.org\/10.1145\/3689769","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,10,8]]},"assertion":[{"value":"2024-04-05","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-10-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}