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...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 8; číslo OOPSLA2; s. 1641 - 1669 |
|---|---|
| Hlavní autoři: | , , |
| 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 |