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 capt...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Proceedings of ACM on programming languages Ročník 8; číslo OOPSLA2; s. 1641 - 1669
Hlavní autoři: Schwartz, David, Kowshik, Ankith, Pina, Luís
Médium: Journal Article
Jazyk:angličtina
Vydáno: New York, NY, USA ACM 08.10.2024
Témata:
ISSN:2475-1421, 2475-1421
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract 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 with multithreading support disabled|enabled, 8% |25% when recording, and 13% |73% when replaying.
AbstractList 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 with multithreading support disabled|enabled, 8% |25% when recording, and 13% |73% when replaying.
ArticleNumber 329
Author Pina, Luís
Schwartz, David
Kowshik, Ankith
Author_xml – sequence: 1
  givenname: David
  orcidid: 0009-0003-9836-3378
  surname: Schwartz
  fullname: Schwartz, David
  email: dschwa23@uic.edu
  organization: University of Illinois, Chicago, USA
– sequence: 2
  givenname: Ankith
  orcidid: 0009-0009-8788-0912
  surname: Kowshik
  fullname: Kowshik, Ankith
  email: akowsh2@uic.edu
  organization: University of Illinois, Chicago, USA
– sequence: 3
  givenname: Luís
  orcidid: 0000-0003-4585-5259
  surname: Pina
  fullname: Pina, Luís
  email: luispina@uic.edu
  organization: University of Illinois, Chicago, USA
BookMark eNpNkD1PwzAQhi1UJEqp2JmyMQXsOI5jNlS1fCgVUgUDU3Sxz6UoH5WdVO2_J1UDYrrn9D53w3tJRnVTIyHXjN4xFot7nqRKJuqMjKNYipDFERv94wsy9f6bUsoUj1OuxuTztdrtH4IF-DZYdmW7Cdsvh2DQDOsOnd80dTDfo-7aI0FtghXqxplwhdsSDoFtXLCEGtb9VQb1uuvJX5FzC6XH6TAn5GMxf589h9nb08vsMQsh4qoNY8uFMEALpbkBQItpqjiNJKQomFZCKF0Yxi1woQWztIhRRjKRQmAK0vIJuT391a7x3qHNt25TgTvkjObHUvKhlN68OZmgqz_pN_wBz_9eBw
Cites_doi 10.1109/ICSE.2013.6606607
10.1007/s10009-021-00644-w
10.5281/zenodo.12637140
10.1109/DSN.2016.46
10.1145/3064176.3064178
10.1145/1040305.1040336
10.4230/LIPIcs.ECOOP.2018.17
10.1145/2660193.2660220
10.1145/1519065.1519071
10.1145/3297858.3304063
10.1145/361011.361073
10.1145/1995896.1995950
10.1145/2775054.2694390
10.4230/LIPIcs.ECOOP.2023.26
10.1145/277652.277734
10.1145/1133255.1134000
10.1145/359545.359563
10.1145/1167473.1167488
10.1145/2714064.2660209
10.1145/1882291.1882323
10.1145/1772954.1772958
10.1145/2509136.2509519
10.1145/281035.281041
10.1145/844128.844148
10.1109/FTCSH.1995.532621
10.1145/3203217.3203237
10.1145/2807426.2807434
10.1145/1811099.1811057
10.1145/2786805.2803179
10.1016/j.future.2015.12.003
10.1109/ICSE.2013.6606582
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3689769
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList CrossRef

DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 1669
ExternalDocumentID 10_1145_3689769
3689769
GrantInformation_xml – fundername: NSF
  grantid: CCF-2227183
  funderid: https://doi.org/10.13039/
GroupedDBID AAKMM
AAYFX
ACM
ADPZR
AIKLT
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
AEFXT
AEJOY
AKRVB
CITATION
ID FETCH-LOGICAL-a239t-4f355da0b9c3daaefe8893027a8e51c9559cbd13fa35c51f0b4e7276755e8a7f3
ISICitedReferencesCount 1
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001360845100019&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 2475-1421
IngestDate Sat Nov 29 07:46:59 EST 2025
Fri Feb 21 01:26:37 EST 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue OOPSLA2
Keywords Multi-version execution
deterministic replay
record replay
reproducible debugging
Language English
License This work is licensed under a Creative Commons Attribution International 4.0 License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a239t-4f355da0b9c3daaefe8893027a8e51c9559cbd13fa35c51f0b4e7276755e8a7f3
ORCID 0009-0009-8788-0912
0009-0003-9836-3378
0000-0003-4585-5259
OpenAccessLink https://dl.acm.org/doi/10.1145/3689769
PageCount 29
ParticipantIDs crossref_primary_10_1145_3689769
acm_primary_3689769
PublicationCentury 2000
PublicationDate 2024-10-08
PublicationDateYYYYMMDD 2024-10-08
PublicationDate_xml – month: 10
  year: 2024
  text: 2024-10-08
  day: 08
PublicationDecade 2020
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationTitle Proceedings of ACM on programming languages
PublicationTitleAbbrev ACM PACMPL
PublicationYear 2024
Publisher ACM
Publisher_xml – name: ACM
References Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’05). Association for Computing Machinery, New York, NY, USA. 378–391. isbn:158113830X https://doi.org/10.1145/1040305.1040336 10.1145/1040305.1040336
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
Kohlschütter Search Intelligence. [n. d.]. junixsocket: Unix Domain Sockets in Java (AF_UNIX). https://github.com/kohlschutter/junixsocket Accessed: 2023-11-15
Intel Corporation. 2007. Intel 64 and IA-32 Architectures Software Developer’s Manual - Volume 3B.
Koen Koning, Herbert Bos, and Cristiano Giuffrida. 2016. Secure and efficient multi-variant execution using hardware-assisted process virtualization. In Proceedings - 46th Annual IEEE/IFIP International Conference on Dependable Systems and Networks, DSN 2016. Institute of Electrical and Electronics Engineers, Inc., 431–442. https://doi.org/10.1109/DSN.2016.46 10.1109/DSN.2016.46
Petr Hosek and Cristian Cadar. 2013. Safe Software Updates via Multi-Version Execution. In Proceedings of the 2013 International Conference on Software Engineering (ICSE ’13). IEEE Press, 612–621. isbn:9781467330763 https://doi.org/10.1109/ICSE.2013.6606607 10.1109/ICSE.2013.6606607
David Schwartz, Ankith Kowshik, and Luís Pina. 2024. Source for JMVX prototype. https://github.com/bitslab/jmvx
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. isbn:1558609105
David Bacon, Joshua Bloch, Jeff Bogda, Cliff Click, Paul Haahr, Doug Lea, Tom May, Jan-Willem Maessen, JD Mitchell, and Kelvin Nilsen. 2000. The “double-checked locking is broken” declaration. https://www.cs.umd.edu/ pugh/java/memoryModel/DoubleCheckedLocking.html Accessed: 2023-11-15
Pavel Dovgalyuk, Denis Dmitriev, and Vladimir Makarov. 2015. Don’t Panic: Reverse Debugging of Kernel Drivers. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). Association for Computing Machinery, New York, NY, USA. 938–941. isbn:9781450336758 https://doi.org/10.1145/2786805.2803179 10.1145/2786805.2803179
Jeff Huang, Peng Liu, and Charles Zhang. 2010. LEAP: lightweight deterministic multi-processor replay of concurrent java programs. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE ’10). Association for Computing Machinery, New York, NY, USA. 385–386. isbn:9781605587912 https://doi.org/10.1145/1882291.1882361 10.1145/1882291.1882361
Petr Hosek and Cristian Cadar. 2015. VARAN the Unbelievable: An Efficient N-Version Execution Framework. SIGPLAN Not., 50, 4 (2015), mar, 339–353. issn:0362-1340 https://doi.org/10.1145/2775054.2694390 10.1145/2775054.2694390
Matthew Maurer and David Brumley. 2012. TACHYON: Tandem Execution for Efficient Live Patch Testing. In Proceedings of the 21st USENIX Conference on Security Symposium (Security’12). USENIX Association, USA. 43.
Luís Pina, Anastasios Andronidis, Michael Hicks, and Cristian Cadar. 2019. MVEDSUA: Higher Availability Dynamic Software Updates via Multi-Version Execution. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’19). Association for Computing Machinery, New York, NY, USA. 573–585. isbn:9781450362405 https://doi.org/10.1145/3297858.3304063 10.1145/3297858.3304063
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).
Michael D. Bond, Milind Kulkarni, Man Cao, Minjia Zhang, Meisam Fathi Salmi, Swarnendu Biswas, Aritra Sengupta, and Jipeng Huang. 2013. OCTET: Capturing and Controlling Cross-Thread Dependences Efficiently. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). Association for Computing Machinery, New York, NY, USA. 693–712. isbn:9781450323741 https://doi.org/10.1145/2509136.2509519 10.1145/2509136.2509519
Luís Pina, Anastasios Andronidis, and Cristian Cadar. 2018. FreeDA: Deploying Incompatible Stock Dynamic Analyses in Production via Multi-Version Execution. In Proceedings of the ACM International Conference on Computing Frontiers (CF ’18). ACM. https://doi.org/10.1145/3203217.3203237 10.1145/3203217.3203237
David Schwartz, Ankith Kowshik, and Luís 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
Michael D. Bond, Milind Kulkarni, Man Cao, Meisam Fathi Salmi, and Jipeng Huang. 2015. Efficient Deterministic Replay of Multithreaded Executions in a Managed Language Virtual Machine. In Proceedings of the Principles and Practices of Programming on The Java Platform (PPPJ ’15). Association for Computing Machinery, New York, NY, USA. 90–101. isbn:9781450337120 https://doi.org/10.1145/2807426.2807434 10.1145/2807426.2807434
Ugnius Rumsevicius, Siddhanth Venkateshwaran, Ellen Kidane, and Luís Pina. 2023. Sinatra: Stateful Instantaneous Updates for Commercial Browsers Through Multi-Version eXecution. In 37th European Conference on Object-Oriented Programming (ECOOP 2023), Karim Ali and Guido Salvaneschi (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 26:1–26:29. isbn:978-3-95977-281-5 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2023.26 10.4230/LIPIcs.ECOOP.2023.26
Dmitry V. Levin. [n. d.]. strace - linux syscall tracer. https://strace.io Accessed: 2023-11-15
Jonathan Bell and Luís Pina. 2018. CROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018), Todd Millstein (Ed.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 109). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 17:1–17:31. isbn:978-3-95977-079-8 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2018.17 10.4230/LIPIcs.ECOOP.2018.17
Earl T. Barr and Mark Marron. 2014. Tardis: affordable time-travel debugging in managed runtimes. ACM SIGPLAN Notices, 49, 10 (2014), Oct., 67–82. issn:0362-1340 https://doi.org/10.1145/2714064.2660209 10.1145/2714064.2660209
Emery Berger and Benjamin Zorn. 2006. DieHard: Probabilistic memory safety for unsafe languages. Sigplan Notices - SIGPLAN, 41, 158–168. https://doi.org/10.1145/1133255.1134000 10.1145/1133255.1134000
Jong-Deok Choi and Harini Srinivasan. 1998. Deterministic Replay of Java Multithreaded Applications. In Proceedings of the SIGMETRICS Symposium on Parallel and Distributed Tools (SPDT ’98). Association for Computing Machinery, New York, NY, USA. 48–59. isbn:1581130015 https://doi.org/10.1145/281035.281041 10.1145/281035.281041
Luís Pina, Luís Veiga, and Michael Hicks. 2014. Rubah: DSU for Java on a Stock JVM. In Proceedings of the ACM 2014 International Conference on Object-Oriented Programming Languages, Systems, and Applications (OOPSLA ’14). ACM. https://doi.org/10.1145/2660193.2660220 10.1145/2660193.2660220
David Seal. 2000. ARM Architecture Reference Manual (2nd ed.). Addison-Wesley Longman Publishing Co., Inc., USA. isbn:0201737191
Oren Laadan, Nicolas Viennot, and Jason Nieh. 2010. Transparent, lightweight application execution replay on commodity multiprocessor operating systems. ACM SIGMETRICS Performance Evaluation Review, 38, 1 (2010), June, 155–166. issn:0163-5999 https://doi.org/10.1145/1811099.1811057 10.1145/1811099.1811057
Jonathan Bell, Nikhil Sarda, and Gail Kaiser. 2013. Chronicler: Lightweight Recording to Reproduce Field Failures. In Proceedings of the 2013 International Conference on Software Engineering (ICSE ’13). IEEE Press, 362–371. isbn:9781467330763 https://doi.org/10.1109/ICSE.2013.6606582 10.1109/ICSE.2013.6606582
James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. 2014. The Java Language Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional. isbn:013390069X
Arkaprava Basu, Jayaram Bobba, and Mark D. Hill. 2011. Karma: Scalable Deterministic Record-Replay. In Proceedings of the International Conference on Supercomputing (ICS ’11). Association for Computing Machinery, New York, NY, USA. 359–368. isbn:9781450301022 https://doi.org/10.1145/1995896.1995950 10.1145/1995896.1995950
Paul-Antoine Arras, Anastasios Andronidis, Luís Pina, Karolis Mituzas, Qianyi Shu, Daniel Grumberg, and Cristian Cadar. 2022. SaBRe: Load-Time Selective Binary Rewriting. Int. J. Softw. Tools Technol. Transf., 24, 2 (2022), apr, 205–223. issn:1433-2779 https://doi.org/10.1007/s10009-021-00644-w 10.1007/s10009-021-00644-w
Leslie Lamport. 1978. Time, Clocks, and the Ordering of Events in a Distributed System. Commun. ACM, 21, 7 (1978), jul, 558–565. issn:0001-0782 https://doi.org/10.1145/359545.359563 10.1145/359545.359563
Luís 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 (USENIX ATC ’17). USENIX.
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. isbn:978-1-931971-30-0 https://www.usenix.org/confe
Xu Meng (e_1_2_1_49_1) 2017
Cox Benjamin (e_1_2_1_15_1) 2006
e_1_2_1_20_1
e_1_2_1_41_1
e_1_2_1_24_1
e_1_2_1_45_1
e_1_2_1_22_1
e_1_2_1_28_1
e_1_2_1_26_1
Seal David (e_1_2_1_42_1) 2017
e_1_2_1_31_1
e_1_2_1_8_1
e_1_2_1_6_1
e_1_2_1_35_1
e_1_2_1_4_1
e_1_2_1_10_1
e_1_2_1_33_1
e_1_2_1_16_1
e_1_2_1_39_1
e_1_2_1_14_1
e_1_2_1_37_1
Bacon David (e_1_2_1_2_1) 2023
Smith Jim (e_1_2_1_43_1) 2005
Gosling James (e_1_2_1_18_1)
Xi Min (e_1_2_1_48_1) 2007
Maurer Matthew (e_1_2_1_29_1) 2012
e_1_2_1_40_1
e_1_2_1_23_1
e_1_2_1_46_1
e_1_2_1_21_1
e_1_2_1_44_1
e_1_2_1_27_1
e_1_2_1_25_1
Bruneton Eric (e_1_2_1_12_1) 2002
e_1_2_1_7_1
e_1_2_1_30_1
e_1_2_1_5_1
Volckaert Stijn (e_1_2_1_47_1) 2016
e_1_2_1_3_1
e_1_2_1_13_1
e_1_2_1_1_1
e_1_2_1_11_1
e_1_2_1_32_1
e_1_2_1_17_1
e_1_2_1_38_1
e_1_2_1_36_1
e_1_2_1_9_1
e_1_2_1_19_1
Pina Luís (e_1_2_1_34_1) 2017
References_xml – reference: 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 ’10. ACM, 2–11. isbn:978-1-60558-635-9 https://doi.org/10.1145/1772954.1772958 Book Title: Proceedings of the 8th annual IEEE/ACM international symposium on code generation and optimization 10.1145/1772954.1772958
– reference: Jonathan Bell, Nikhil Sarda, and Gail Kaiser. 2013. Chronicler: Lightweight Recording to Reproduce Field Failures. In Proceedings of the 2013 International Conference on Software Engineering (ICSE ’13). IEEE Press, 362–371. isbn:9781467330763 https://doi.org/10.1109/ICSE.2013.6606582 10.1109/ICSE.2013.6606582
– reference: Matthew Maurer and David Brumley. 2012. TACHYON: Tandem Execution for Efficient Live Patch Testing. In Proceedings of the 21st USENIX Conference on Security Symposium (Security’12). USENIX Association, USA. 43.
– reference: Jong-Deok Choi and Harini Srinivasan. 1998. Deterministic Replay of Java Multithreaded Applications. In Proceedings of the SIGMETRICS Symposium on Parallel and Distributed Tools (SPDT ’98). Association for Computing Machinery, New York, NY, USA. 48–59. isbn:1581130015 https://doi.org/10.1145/281035.281041 10.1145/281035.281041
– reference: Oren Laadan, Nicolas Viennot, and Jason Nieh. 2010. Transparent, lightweight application execution replay on commodity multiprocessor operating systems. ACM SIGMETRICS Performance Evaluation Review, 38, 1 (2010), June, 155–166. issn:0163-5999 https://doi.org/10.1145/1811099.1811057 10.1145/1811099.1811057
– reference: Babak Salamat, Todd Jackson, Andreas Gal, and Michael Franz. 2009. Orchestra: Intrusion Detection Using Parallel Execution and Monitoring of Program Variants in User-Space. In Proceedings of the 4th ACM European Conference on Computer Systems (EuroSys ’09). Association for Computing Machinery, New York, NY, USA. 33–46. isbn:9781605584829 https://doi.org/10.1145/1519065.1519071 10.1145/1519065.1519071
– reference: Petr Hosek and Cristian Cadar. 2015. VARAN the Unbelievable: An Efficient N-Version Execution Framework. SIGPLAN Not., 50, 4 (2015), mar, 339–353. issn:0362-1340 https://doi.org/10.1145/2775054.2694390 10.1145/2775054.2694390
– reference: Stijn Volckaert, Bart Coppens, Bjorn De Sutter, Koen De Bosschere, Per Larsen, and Michael Franz. 2017. Taming Parallelism in a Multi-Variant Execution Environment. In Proceedings of the Twelfth European Conference on Computer Systems (EuroSys ’17). Association for Computing Machinery, New York, NY, USA. 270–285. isbn:9781450349383 https://doi.org/10.1145/3064176.3064178 10.1145/3064176.3064178
– reference: Emery Berger and Benjamin Zorn. 2006. DieHard: Probabilistic memory safety for unsafe languages. Sigplan Notices - SIGPLAN, 41, 158–168. https://doi.org/10.1145/1133255.1134000 10.1145/1133255.1134000
– reference: 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
– reference: Pavel Dovgalyuk, Denis Dmitriev, and Vladimir Makarov. 2015. Don’t Panic: Reverse Debugging of Kernel Drivers. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015). Association for Computing Machinery, New York, NY, USA. 938–941. isbn:9781450336758 https://doi.org/10.1145/2786805.2803179 10.1145/2786805.2803179
– reference: Robert O’Callahan, Chris Jones, Albert Noll, Nathan Froyd, Nimrod Partush, and Kyle Huey. [n. d.]. Engineering Record And Replay For Deployability. 377–389.
– reference: Paul-Antoine Arras, Anastasios Andronidis, Luís Pina, Karolis Mituzas, Qianyi Shu, Daniel Grumberg, and Cristian Cadar. 2022. SaBRe: Load-Time Selective Binary Rewriting. Int. J. Softw. Tools Technol. Transf., 24, 2 (2022), apr, 205–223. issn:1433-2779 https://doi.org/10.1007/s10009-021-00644-w 10.1007/s10009-021-00644-w
– reference: Jonathan Bell and Luís Pina. 2018. CROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018), Todd Millstein (Ed.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 109). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 17:1–17:31. isbn:978-3-95977-079-8 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2018.17 10.4230/LIPIcs.ECOOP.2018.17
– reference: Arkaprava Basu, Jayaram Bobba, and Mark D. Hill. 2011. Karma: Scalable Deterministic Record-Replay. In Proceedings of the International Conference on Supercomputing (ICS ’11). Association for Computing Machinery, New York, NY, USA. 359–368. isbn:9781450301022 https://doi.org/10.1145/1995896.1995950 10.1145/1995896.1995950
– reference: Luís Pina, Anastasios Andronidis, Michael Hicks, and Cristian Cadar. 2019. MVEDSUA: Higher Availability Dynamic Software Updates via Multi-Version Execution. In Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’19). Association for Computing Machinery, New York, NY, USA. 573–585. isbn:9781450362405 https://doi.org/10.1145/3297858.3304063 10.1145/3297858.3304063
– reference: Michael D. Bond, Milind Kulkarni, Man Cao, Minjia Zhang, Meisam Fathi Salmi, Swarnendu Biswas, Aritra Sengupta, and Jipeng Huang. 2013. OCTET: Capturing and Controlling Cross-Thread Dependences Efficiently. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). Association for Computing Machinery, New York, NY, USA. 693–712. isbn:9781450323741 https://doi.org/10.1145/2509136.2509519 10.1145/2509136.2509519
– reference: Ugnius Rumsevicius, Siddhanth Venkateshwaran, Ellen Kidane, and Luís Pina. 2023. Sinatra: Stateful Instantaneous Updates for Commercial Browsers Through Multi-Version eXecution. In 37th European Conference on Object-Oriented Programming (ECOOP 2023), Karim Ali and Guido Salvaneschi (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 26:1–26:29. isbn:978-3-95977-281-5 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2023.26 10.4230/LIPIcs.ECOOP.2023.26
– reference: Kohlschütter Search Intelligence. [n. d.]. junixsocket: Unix Domain Sockets in Java (AF_UNIX). https://github.com/kohlschutter/junixsocket Accessed: 2023-11-15
– reference: Gerald J. Popek and Robert P. Goldberg. 1974. Formal Requirements for Virtualizable Third Generation Architectures. Commun. ACM, 17, 7 (1974), jul, 412–421. issn:0001-0782 https://doi.org/10.1145/361011.361073 10.1145/361011.361073
– reference: 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. isbn:1558609105
– reference: Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’06). Association for Computing Machinery, New York, NY, USA. 169–190. isbn:1595933484 https://doi.org/10.1145/1167473.1167488 10.1145/1167473.1167488
– reference: George W Dunlap, Samuel T King, Sukru Cinar, Murtaza A Basrai, and Peter M Chen. 2002. ReVirt: Enabling intrusion analysis through virtual-machine logging and replay. ACM SIGOPS Operating Systems Review, 36, SI (2002), 211–224. https://doi.org/10.1145/844128.844148 Publisher: ACM New York, NY, USA 10.1145/844128.844148
– reference: David Schwartz, Ankith Kowshik, and Luís 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
– reference: Intel Corporation. 2007. Intel 64 and IA-32 Architectures Software Developer’s Manual - Volume 3B.
– reference: Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java Memory Model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’05). Association for Computing Machinery, New York, NY, USA. 378–391. isbn:158113830X https://doi.org/10.1145/1040305.1040336 10.1145/1040305.1040336
– reference: 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
– reference: David Bacon, Joshua Bloch, Jeff Bogda, Cliff Click, Paul Haahr, Doug Lea, Tom May, Jan-Willem Maessen, JD Mitchell, and Kelvin Nilsen. 2000. The “double-checked locking is broken” declaration. https://www.cs.umd.edu/ pugh/java/memoryModel/DoubleCheckedLocking.html Accessed: 2023-11-15
– reference: Dmitry V. Levin. [n. d.]. strace - linux syscall tracer. https://strace.io Accessed: 2023-11-15
– reference: Eric Bruneton, Romain Lenglet, and Thierry Coupaye. 2002. ASM: A code manipulation tool to implement adaptable systems. In In Adaptable and extensible component systems.
– reference: Petr Hosek and Cristian Cadar. 2013. Safe Software Updates via Multi-Version Execution. In Proceedings of the 2013 International Conference on Software Engineering (ICSE ’13). IEEE Press, 612–621. isbn:9781467330763 https://doi.org/10.1109/ICSE.2013.6606607 10.1109/ICSE.2013.6606607
– reference: David F. Bacon, Ravi Konuru, Chet Murthy, and Mauricio Serrano. 1998. Thin Locks: Featherweight Synchronization for Java. SIGPLAN Not., 33, 5 (1998), may, 258–268. issn:0362-1340 https://doi.org/10.1145/277652.277734 10.1145/277652.277734
– reference: Luís Pina, Luís Veiga, and Michael Hicks. 2014. Rubah: DSU for Java on a Stock JVM. In Proceedings of the ACM 2014 International Conference on Object-Oriented Programming Languages, Systems, and Applications (OOPSLA ’14). ACM. https://doi.org/10.1145/2660193.2660220 10.1145/2660193.2660220
– reference: 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).
– reference: Weizhong Qiang, Feng Chen, Laurence T. Yang, and Hai Jin. 2017. MUC: Updating cloud applications dynamically via multi-version execution. Future Generation Computer Systems, 74 (2017), 254–264. issn:0167-739X https://doi.org/10.1016/j.future.2015.12.003 10.1016/j.future.2015.12.003
– reference: David Schwartz, Ankith Kowshik, and Luís Pina. 2024. Source for JMVX prototype. https://github.com/bitslab/jmvx
– reference: Leslie Lamport. 1978. Time, Clocks, and the Ordering of Events in a Distributed System. Commun. ACM, 21, 7 (1978), jul, 558–565. issn:0001-0782 https://doi.org/10.1145/359545.359563 10.1145/359545.359563
– reference: 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. isbn:978-1-931971-30-0 https://www.usenix.org/conference/atc16/technical-sessions/presentation/volckaert
– reference: Luís 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 (USENIX ATC ’17). USENIX.
– reference: Jeff Huang, Peng Liu, and Charles Zhang. 2010. LEAP: lightweight deterministic multi-processor replay of concurrent java programs. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE ’10). Association for Computing Machinery, New York, NY, USA. 385–386. isbn:9781605587912 https://doi.org/10.1145/1882291.1882361 10.1145/1882291.1882361
– reference: David Seal. 2000. ARM Architecture Reference Manual (2nd ed.). Addison-Wesley Longman Publishing Co., Inc., USA. isbn:0201737191
– reference: James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. 2014. The Java Language Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional. isbn:013390069X
– reference: Luís Pina, Anastasios Andronidis, and Cristian Cadar. 2018. FreeDA: Deploying Incompatible Stock Dynamic Analyses in Production via Multi-Version Execution. In Proceedings of the ACM International Conference on Computing Frontiers (CF ’18). ACM. https://doi.org/10.1145/3203217.3203237 10.1145/3203217.3203237
– reference: 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. isbn:978-1-931971-38-6 https://www.usenix.org/conference/atc17/technical-sessions/presentation/xu-meng
– reference: 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
– reference: Koen Koning, Herbert Bos, and Cristiano Giuffrida. 2016. Secure and efficient multi-variant execution using hardware-assisted process virtualization. In Proceedings - 46th Annual IEEE/IFIP International Conference on Dependable Systems and Networks, DSN 2016. Institute of Electrical and Electronics Engineers, Inc., 431–442. https://doi.org/10.1109/DSN.2016.46 10.1109/DSN.2016.46
– reference: Michael D. Bond, Milind Kulkarni, Man Cao, Meisam Fathi Salmi, and Jipeng Huang. 2015. Efficient Deterministic Replay of Multithreaded Executions in a Managed Language Virtual Machine. In Proceedings of the Principles and Practices of Programming on The Java Platform (PPPJ ’15). Association for Computing Machinery, New York, NY, USA. 90–101. isbn:9781450337120 https://doi.org/10.1145/2807426.2807434 10.1145/2807426.2807434
– reference: Earl T. Barr and Mark Marron. 2014. Tardis: affordable time-travel debugging in managed runtimes. ACM SIGPLAN Notices, 49, 10 (2014), Oct., 67–82. issn:0362-1340 https://doi.org/10.1145/2714064.2660209 10.1145/2714064.2660209
– reference: Liming Chen and A. Avizienis. 1995. N-version programming: A fault-tolerance approach to reliability of software operation. In Twenty-Fifth International Symposium on Fault-Tolerant Computing, 1995, ’ Highlights from Twenty-Five Years’.. 113–. https://doi.org/10.1109/FTCSH.1995.532621 10.1109/FTCSH.1995.532621
– volume-title: Proceedings of the 21st USENIX Conference on Security Symposium (Security’12)
  year: 2012
  ident: e_1_2_1_29_1
– ident: e_1_2_1_19_1
  doi: 10.1109/ICSE.2013.6606607
– ident: e_1_2_1_26_1
– ident: e_1_2_1_1_1
  doi: 10.1007/s10009-021-00644-w
– ident: e_1_2_1_40_1
  doi: 10.5281/zenodo.12637140
– ident: e_1_2_1_23_1
  doi: 10.1109/DSN.2016.46
– volume-title: ARM Architecture Reference Manual
  year: 2017
  ident: e_1_2_1_42_1
– ident: e_1_2_1_46_1
  doi: 10.1145/3064176.3064178
– ident: e_1_2_1_28_1
  doi: 10.1145/1040305.1040336
– ident: e_1_2_1_6_1
  doi: 10.4230/LIPIcs.ECOOP.2018.17
– ident: e_1_2_1_35_1
  doi: 10.1145/2660193.2660220
– ident: e_1_2_1_39_1
  doi: 10.1145/1519065.1519071
– ident: e_1_2_1_33_1
  doi: 10.1145/3297858.3304063
– ident: e_1_2_1_36_1
  doi: 10.1145/361011.361073
– ident: e_1_2_1_45_1
– ident: e_1_2_1_5_1
  doi: 10.1145/1995896.1995950
– volume-title: Proceedings of the USENIX Annual Technical Conference (USENIX ATC ’17)
  year: 2017
  ident: e_1_2_1_34_1
– ident: e_1_2_1_20_1
  doi: 10.1145/2775054.2694390
– ident: e_1_2_1_38_1
  doi: 10.4230/LIPIcs.ECOOP.2023.26
– ident: e_1_2_1_3_1
  doi: 10.1145/277652.277734
– volume-title: Secure and Efficient Application Monitoring and Replication. In 2016 USENIX Annual Technical Conference (USENIX ATC 16)
  year: 2016
  ident: e_1_2_1_47_1
– volume-title: Virtual Machines: Versatile Platforms for Systems and Processes (The Morgan Kaufmann Series in Computer Architecture and Design)
  year: 2005
  ident: e_1_2_1_43_1
– ident: e_1_2_1_8_1
  doi: 10.1145/1133255.1134000
– ident: e_1_2_1_25_1
  doi: 10.1145/359545.359563
– ident: e_1_2_1_9_1
  doi: 10.1145/1167473.1167488
– ident: e_1_2_1_4_1
  doi: 10.1145/2714064.2660209
– ident: e_1_2_1_21_1
  doi: 10.1145/1882291.1882323
– ident: e_1_2_1_31_1
  doi: 10.1145/1772954.1772958
– ident: e_1_2_1_11_1
  doi: 10.1145/2509136.2509519
– ident: e_1_2_1_13_1
  doi: 10.1145/281035.281041
– ident: e_1_2_1_17_1
  doi: 10.1145/844128.844148
– ident: e_1_2_1_27_1
  doi: 10.1109/FTCSH.1995.532621
– ident: e_1_2_1_32_1
  doi: 10.1145/3203217.3203237
– ident: e_1_2_1_10_1
  doi: 10.1145/2807426.2807434
– ident: e_1_2_1_14_1
– volume-title: 15th USENIX Security Symposium (USENIX Security 06)
  year: 2006
  ident: e_1_2_1_15_1
– volume-title: Java SE 8 Edition
  ident: e_1_2_1_18_1
– volume-title: Proceedings of the Third Annual Workshop on Modeling, Benchmarking and Simulation (MoBS
  year: 2007
  ident: e_1_2_1_48_1
– ident: e_1_2_1_24_1
  doi: 10.1145/1811099.1811057
– volume-title: “double-checked locking is broken
  year: 2023
  ident: e_1_2_1_2_1
– ident: e_1_2_1_22_1
– volume-title: 2017 USENIX Annual Technical Conference (USENIX ATC 17)
  year: 2017
  ident: e_1_2_1_49_1
– volume-title: ASM: A code manipulation tool to implement adaptable systems. In In Adaptable and extensible component systems.
  year: 2002
  ident: e_1_2_1_12_1
– ident: e_1_2_1_16_1
  doi: 10.1145/2786805.2803179
– ident: e_1_2_1_37_1
  doi: 10.1016/j.future.2015.12.003
– ident: e_1_2_1_44_1
– ident: e_1_2_1_41_1
– ident: e_1_2_1_30_1
– ident: e_1_2_1_7_1
  doi: 10.1109/ICSE.2013.6606582
SSID ssj0001934839
Score 2.2911563
Snippet Multi-Version eXecution (MVX) is a technique that deploys many equivalent versions of the same program — variants — as a single program, with direct...
SourceID crossref
acm
SourceType Index Database
Publisher
StartPage 1641
SubjectTerms Software and its engineering
Software maintenance tools
Software reliability
Software testing and debugging
SubjectTermsDisplay Software and its engineering -- Software maintenance tools
Software and its engineering -- Software reliability
Software and its engineering -- Software testing and debugging
Title Jmvx: Fast Multi-threaded Multi-version Execution and Record-Replay for Managed Languages
URI https://dl.acm.org/doi/10.1145/3689769
Volume 8
WOSCitedRecordID wos001360845100019&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVHPJ
  databaseName: ROAD: Directory of Open Access Scholarly Resources
  customDbUrl:
  eissn: 2475-1421
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0001934839
  issn: 2475-1421
  databaseCode: M~E
  dateStart: 20170101
  isFulltext: true
  titleUrlDefault: https://road.issn.org
  providerName: ISSN International Centre
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1Nb9QwELWgcOBSSgHRQpEP3FYR69hOYm6r0gqhbbsSBZVTNXYcddVuqJrsdsWB3844dtIEOMCBS5QPJ4o8T-M34zc2IW8U46YAgMjgWIEBioIItDBI5CTCKbY6bdbp_jJNj4-zszM1CzOmVbOdQFqW2Xqtrv-rqfEeGtuVzv6DubuP4g08R6PjEc2Ox78y_MfFyrUdHUJVj5r62qhGg0GO1NJfrnyObHSwtmZZt3pkH4hGyMivwKs4vTQmH01DTrPqM9lZN_I1YpDJ_pGbdwhyr4VLQFwNXmsmey5u8Ye__6Kld3U3t9XF_NILLC_ndZeins19ydp02Uzovx8kKWLhVXI9WAXhe-PYYpHKiAlfGd164awHtpOT2afpJO75VQzqWG-MZonf3-V3_y_cUhk8yZBlqbshrhMehif3yYM4lcpJAI9-9HJyigskjL622n3rbWjvqItZ9KhLj4OcbpHNEDzQiTf6E3LPltvkcbsxBw1--in56jDwjjoE0CEC6AABtEMARQTQAQIoIoAGBNAOAc_I58OD0_0PUdhDI4KYqzoSBRLKHMZaGZ4D2MJmyFDHcQqZlcy49QeNzhkvgEsjWTHWwiKlxTBS2gzSgj8nG-W30r4gtOA21omCBJQWmimwWuJwYFMtGCR5sUO2sZPOr_0qKeeh63YIbTute-SL4WXbZPePL74kj-6Q9Ips1DdLu0cemlU9r25eN4b7CYSFYeQ
linkProvider ISSN International Centre
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Jmvx%3A+Fast+Multi-threaded+Multi-version+Execution+and+Record-Replay+for+Managed+Languages&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Schwartz%2C+David&rft.au=Kowshik%2C+Ankith&rft.au=Pina%2C+Lu%C3%ADs&rft.date=2024-10-08&rft.pub=ACM&rft.eissn=2475-1421&rft.volume=8&rft.issue=OOPSLA2&rft.spage=1641&rft.epage=1669&rft_id=info:doi/10.1145%2F3689769&rft.externalDocID=3689769
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon