{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:22:48Z","timestamp":1760059368644,"version":"build-2065373602"},"reference-count":100,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","funder":[{"DOI":"10.13039\/501100003130","name":"Fonds Wetenschappelijk Onderzoek","doi-asserted-by":"publisher","award":["FWOOPR2020008201"],"award-info":[{"award-number":["FWOOPR2020008201"]}],"id":[{"id":"10.13039\/501100003130","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,10,9]]},"abstract":"<jats:p>Debugging non-deterministic programs on microcontrollers is notoriously challenging, especially when bugs manifest in unpredictable, input-dependent execution paths.  \nA recent approach, called multiverse debugging, makes it easier to debug non-deterministic programs by allowing programmers to explore all potential execution paths.  \nCurrent multiverse debuggers enable both forward and backward traversal of program paths, and some facilitate jumping to any previously visited states, potentially branching into alternative execution paths within the state space.<\/jats:p>\n          <jats:p>Unfortunately, debugging programs that involve input\/output operations using existing multiverse debuggers can reveal inaccessible program states, i.e. states which are not encountered during regular execution.  \nThis can significantly hinder the debugging process, as the programmer may spend substantial time exploring and examining inaccessible program states, or worse, may mistakenly assume a bug is present in the code, when in fact, the issue is caused by the debugger.<\/jats:p>\n          <jats:p>This paper presents a novel approach to multiverse debugging, which can accommodate a broad spectrum of input\/output operations.  \nWe provide the semantics of our approach and prove the correctness of our debugger, ensuring that despite having support for a wide range of input\/output operations the debugger will only explore those program states which can be reached during regular execution.<\/jats:p>\n          <jats:p>We have developed a prototype, called MIO, leveraging the WARDuino WebAssembly virtual machine to demonstrate the feasibility and efficiency of our techniques.  \nAs a demonstration of the approach we highlight a color dial built with a Lego Mindstorms motor, and color sensor, providing a tangible example of how our approach enables multiverse debugging for programs running on an STM32 microcontroller.<\/jats:p>","DOI":"10.1145\/3763136","type":"journal-article","created":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T08:49:50Z","timestamp":1759999790000},"page":"2396-2425","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["MIO: Multiverse Debugging in the Face of Input\/Output"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-1262-8893","authenticated-orcid":false,"given":"Tom","family":"Lauwaerts","sequence":"first","affiliation":[{"name":"Universiteit Gent, Ghent, Belgium"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-6339-0467","authenticated-orcid":false,"given":"Maarten","family":"Steevens","sequence":"additional","affiliation":[{"name":"Universiteit Gent, Ghent, Belgium"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2837-4763","authenticated-orcid":false,"given":"Christophe","family":"Scholliers","sequence":"additional","affiliation":[{"name":"Universiteit Gent, Ghent, Belgium"}]}],"member":"320","published-online":{"date-parts":[[2025,10,9]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/IEEESTD.2013.6515989"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.88940"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1082983.1083284"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00236-015-0253-y"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3182657"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1476793.1476881"},{"key":"e_1_2_2_7_1","volume-title":"Portable, High-Performance Applications","author":"Battagline R.","year":"1850","unstructured":"R. Battagline. 2021. The Art of WebAssembly: Build Secure, Portable, High-Performance Applications. No Starch Press. isbn:978-1-71850-144-7"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1147\/rd.321.0016"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-43835-6_19"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(04)80002-1"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/DASC.1998.741501"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349339"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2501988.2502050"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985995"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.940726"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/302405.302640"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-28644-8_19"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597503.3623331"},{"key":"e_1_2_2_19_1","volume-title":"Proceedings of the 2012 System, Software, SoC and Silicon Debug Conference. 1\u20136. issn:2114-3684","author":"Engblom Jakob","year":"2012","unstructured":"Jakob Engblom. 2012. A Review of Reverse Debugging. In Proceedings of the 2012 System, Software, SoC and Silicon Debug Conference. 1\u20136. issn:2114-3684"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/69215.69226"},{"key":"e_1_2_2_21_1","volume-title":"Robert Bruce Findler, and Matthew Flatt","author":"Felleisen Matthias","year":"2009","unstructured":"Matthias Felleisen, Robert Bruce Findler, and Matthew Flatt. 2009. Semantics Engineering with PLT Redex. Mit Press."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/372202.380701"},{"key":"e_1_2_2_23_1","unstructured":"Francisco Ferreira Ruiz Ben Collins and et. al. 2024. Open Bot Brain."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-30599-8_21"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380160304"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-54804-8_26"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.tcs.2022.06.010"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263717"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064978.1065036"},{"volume-title":"Programming Language Abstractions and Tools for Dealing with Nondeterministic Programs. Ph. D. Dissertation","author":"Singh Robbert Gurdeep","key":"e_1_2_2_30_1","unstructured":"Robbert Gurdeep Singh. 2022. Taming Nondeterminism : Programming Language Abstractions and Tools for Dealing with Nondeterministic Programs. Ph. D. Dissertation. Ghent University."},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.4230\/DARTS.5.2.4"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062363"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-59936-6_5"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-79837-6_6"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2015.12.014"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","unstructured":"James Hoey Irek Ulidowski and Shoji Yuen. 2018. Reversing Parallel Programs with Blocks and Procedures. https:\/\/doi.org\/10.48550\/arXiv.1808.08651 10.48550\/arXiv.1808.08651","DOI":"10.48550\/arXiv.1808.08651"},{"key":"e_1_2_2_37_1","unstructured":"Hubert H\u00f6gl and Dominic Rath. 2006. Open On-Chip Debugger\u2013Openocd\u2013. Fakultat fur Informatik Tech. Rep."},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3689492.3690053"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10270-013-0328-6"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1592434.1592438"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-02658-4_31"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.2307\/2287860"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3025453.3025626"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLHCC.2017.8103446"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3173574.3173748"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/360248.360252"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","unstructured":"R. Kurshan V. Levin M. Minea D. Peled and H. Yenig\u00fcn. 1998. Static Partial Order Reduction. In Tools and Algorithms for the Construction and Analysis of Systems Bernhard Steffen (Ed.). Springer Berlin Heidelberg. 345\u2013357. isbn:978-3-540-69753-4 https:\/\/doi.org\/10.1007\/BFb0054182 10.1007\/BFb0054182","DOI":"10.1007\/BFb0054182"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-62076-8_8"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-99498-7_2"},{"key":"e_1_2_2_50_1","unstructured":"Ivan Lanese Claudio Mezzina and Francesco Tiezzi. 2014. Causal-Consistent Reversibility. Nov.."},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-90686-7_16"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0263574717000613"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/3546918.3546920"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cola.2024.101268"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.48550\/arXiv.2509.06845"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/5001.5005"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","unstructured":"Bil Lewis. 2003. Debugging Backwards in Time. https:\/\/doi.org\/10.48550\/arXiv.cs\/0310016 10.48550\/arXiv.cs\/0310016","DOI":"10.48550\/arXiv.cs\/0310016"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICCSE.2009.5228140"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11432-011-4530-2"},{"key":"e_1_2_2_60_1","unstructured":"Henry Lieberman. 1997. ZStep 95: A Reversible Animated Source Code Stepper. Software Visualization: Programming as a Multimedia Experience."},{"key":"e_1_2_2_61_1","volume-title":"Janus: A Time-Reversible Language. Letter to R. Landauer, 2","author":"Lutz Christopher","year":"1986","unstructured":"Christopher Lutz and Howard Derby. 1986. Janus: A Time-Reversible Language. Letter to R. Landauer, 2 (1986)."},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/1868358.1868363"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2022.11"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/QRS54544.2021.00072"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.22152\/programming-journal.org\/2019\/3\/3"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/3409000"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/76894.76897"},{"key":"e_1_2_2_68_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-47361-7_2"},{"key":"e_1_2_2_69_1","first-page":"38","volume-title":"Engineering Record and Replay for Deployability. In 2017 USENIX Annual Technical Conference (USENIX ATC 17)","author":"O\u2019Callahan Robert","year":"2017","unstructured":"Robert O\u2019Callahan, Chris Jones, Nathan Froyd, Kyle Huey, Albert Noll, and Nimrod Partush. 2017. Engineering Record and Replay for Deployability. In 2017 USENIX Annual Technical Conference (USENIX ATC 17). 377\u2013389. isbn:978-1-931971-38-6"},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1109\/MODELS-C59198.2023.00130"},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/3623476.3623526"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/3550355.3552447"},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2007.53"},{"key":"e_1_2_2_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297105.1297067"},{"key":"e_1_2_2_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/3131542.3140259"},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/312203.312214"},{"volume-title":"Data Structures, and Architecture","author":"Rosenberg Jonathan B.","key":"e_1_2_2_77_1","unstructured":"Jonathan B. Rosenberg. 1996. How Debuggers Work: Algorithms, Data Structures, and Architecture. John Wiley & Sons, Inc., USA. isbn:978-0-471-14966-8"},{"key":"e_1_2_2_78_1","unstructured":"Andreas Rossberg. 2019. WebAssembly (Release 1.0). https:\/\/webassembly.github.io\/spec\/."},{"key":"e_1_2_2_79_1","unstructured":"Andreas Rossberg. 2023. WebAssembly (Release 2.0). https:\/\/webassembly.github.io\/spec\/."},{"key":"e_1_2_2_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/2431211.2431220"},{"key":"e_1_2_2_81_1","doi-asserted-by":"publisher","DOI":"10.1145\/2901378.2901394"},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-47361-7_8"},{"key":"e_1_2_2_83_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-40578-0_10"},{"key":"e_1_2_2_84_1","doi-asserted-by":"publisher","DOI":"10.1007\/11693017_25"},{"key":"e_1_2_2_85_1","doi-asserted-by":"publisher","DOI":"10.1145\/3678720.3685314"},{"key":"e_1_2_2_86_1","unstructured":"Karl S\u00f6derby and Ubi De Feo. 2024. Debugging with the Arduino IDE 2.0. https:\/\/docs.arduino.cc\/software\/ide-v2\/tutorials\/ide-v2-debugger."},{"key":"e_1_2_2_87_1","doi-asserted-by":"publisher","DOI":"10.1177\/1745691616658637"},{"key":"e_1_2_2_88_1","doi-asserted-by":"publisher","unstructured":"Maarten Steevens Tom Lauwaerts and Christophe Scholliers. 2025. TOPLLab\/MIO: 0.1.4. https:\/\/doi.org\/10.5281\/zenodo.15838624 10.5281\/zenodo.15838624","DOI":"10.5281\/zenodo.15838624"},{"key":"e_1_2_2_89_1","doi-asserted-by":"publisher","DOI":"10.1145\/2480360.2384591"},{"key":"e_1_2_2_90_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.softx.2023.101617"},{"key":"e_1_2_2_91_1","doi-asserted-by":"publisher","DOI":"10.1145\/3141834.3141839"},{"key":"e_1_2_2_92_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2019.27"},{"key":"e_1_2_2_93_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-65306-6_21"},{"key":"e_1_2_2_94_1","doi-asserted-by":"publisher","DOI":"10.2307\/3212735"},{"key":"e_1_2_2_95_1","doi-asserted-by":"publisher","DOI":"10.1145\/1366230.1366239"},{"key":"e_1_2_2_96_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-29517-1_2"},{"key":"e_1_2_2_97_1","doi-asserted-by":"publisher","DOI":"10.1145\/362342.362360"},{"key":"e_1_2_2_98_1","doi-asserted-by":"publisher","DOI":"10.1145\/609769.609778"},{"key":"e_1_2_2_99_1","doi-asserted-by":"publisher","DOI":"10.1109\/CMPSAC.1992.217567"},{"volume-title":"A Higher-Order Lambda Calculus: PowerEpsilon. Technical report","author":"Zhu Ming-Yuan","key":"e_1_2_2_100_1","unstructured":"Ming-Yuan Zhu and CW Wang. 1991. A Higher-Order Lambda Calculus: PowerEpsilon. Technical report, Beijing Institute of Systems Engineering, Beijing."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3763136","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T17:50:54Z","timestamp":1760032254000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3763136"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,9]]},"references-count":100,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2025,10,9]]}},"alternative-id":["10.1145\/3763136"],"URL":"https:\/\/doi.org\/10.1145\/3763136","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2025,10,9]]},"assertion":[{"value":"2025-03-25","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-08-12","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-10-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}