{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,24]],"date-time":"2025-10-24T16:44:05Z","timestamp":1761324245831,"version":"3.41.0"},"reference-count":77,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2019,10,10]],"date-time":"2019-10-10T00:00:00Z","timestamp":1570665600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1751029"],"award-info":[{"award-number":["1751029"]}],"id":[{"id":"10.13039\/100000001","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":[[2019,10,10]]},"abstract":"<jats:p>Intermittently-powered, energy-harvesting devices operate on energy collected from their environment and must operate intermittently as energy is available.<\/jats:p>\n          <jats:p>\n            Runtime systems for such devices often rely on checkpoints or redo-logs to save execution state between power cycles, causing arbitrary code regions to re-execute on reboot. Any\n            <jats:italic>non-idempotent<\/jats:italic>\n            program behavior\u2014behavior that can change on each execution\u2014can lead to incorrect results.\n          <\/jats:p>\n          <jats:p>This work investigates non-idempotent behavior caused by repeating I\/O operations, not addressed by prior work. If such operations affect a control statement or address of a memory update, they can cause programs to take different paths or write to different memory locations on re-executions, resulting in inconsistent memory states. We provide the first characterization of input-dependent idempotence bugs and develop IBIS-S, a program analysis tool for detecting such bugs at compile time, and IBIS-D, a dynamic information flow tracker to detect bugs at runtime.<\/jats:p>\n          <jats:p>These tools use taint propagation to determine the reach of input. IBIS-S searches for code patterns leading to inconsistent memory updates, while IBIS-D detects concrete memory inconsistencies. We evaluate IBIS on embedded system drivers and applications. IBIS can detect I\/O-dependent idempotence bugs, giving few (IBIS-S) or no (IBIS-D) false positives and providing actionable bug reports. These bugs are common in sensor-driven applications and are not fixed by existing intermittent systems.<\/jats:p>","DOI":"10.1145\/3360609","type":"journal-article","created":{"date-parts":[[2019,10,11]],"date-time":"2019-10-11T14:53:33Z","timestamp":1570805613000},"page":"1-31","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":21,"title":["I\/O dependent idempotence bugs in intermittent systems"],"prefix":"10.1145","volume":"3","author":[{"given":"Milijana","family":"Surbatovich","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"given":"Limin","family":"Jia","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]},{"given":"Brandon","family":"Lucia","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}]}],"member":"320","published-online":{"date-parts":[[2019,10,10]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/INFOCOM.2017.8056987"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2016.2547919"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/LES.2014.2371494"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3323165.3323187"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/GIOTS.2017.8016243"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3055031.3055082"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3243734.3243823"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950380"},{"volume-title":"Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS \u201916)","author":"Colin Alexei","key":"e_1_2_2_9_1"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2983995"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3178372.3179525"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3173162.3173210"},{"key":"e_1_2_2_13_1","doi-asserted-by":"crossref","unstructured":"Manjeet Dahiya and Sorav Bansal. 2018. Automatic Verification of Intermittent Systems. In Verification Model Checking and Abstract Interpretation Isil Dillig and Jens Palsberg (Eds.). Cham.  Manjeet Dahiya and Sorav Bansal. 2018. Automatic Verification of Intermittent Systems. In Verification Model Checking and Abstract Interpretation Isil Dillig and Jens Palsberg (Eds.). Cham.","DOI":"10.1007\/978-3-319-73721-8_8"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2013.6495002"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254120"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2592798.2592814"},{"volume-title":"Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation (OSDI\u201910)","author":"Enck William","key":"e_1_2_2_17_1"},{"key":"e_1_2_2_18_1","unstructured":"EPCglobal Inc. 2015. EPC Radio-Frequency Identity Protocols Generation-2 UHF RFID. https:\/\/www.gs1.org\/sites\/default\/ files\/docs\/epc\/Gen2_Protocol_Standard.pdf .  EPCglobal Inc. 2015. EPC Radio-Frequency Identity Protocols Generation-2 UHF RFID. https:\/\/www.gs1.org\/sites\/default\/ files\/docs\/epc\/Gen2_Protocol_Standard.pdf ."},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1816038.1816012"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3131672.3131674"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3131672.3131673"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3079856.3080238"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594315"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872410"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/VLSID.2014.63"},{"key":"e_1_2_2_26_1","first-page":"5","article-title":"Static Analysis for Detecting Taint-style Vulnerabilities in Web Applications","volume":"18","author":"Jovanovic Nenad","year":"2010","journal-title":"J. Comput. Secur."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3218603.3218633"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1236360.1236395"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2508859.2516703"},{"volume-title":"Proceedings of the 51st Annual IEEE\/ACM International Symposium on Microarchitecture (MICRO 51)","author":"Liu Q.","key":"e_1_2_2_30_1"},{"volume-title":"Proceedings of the 14th Conference on USENIX Security Symposium (USENIX Security \u201905)","author":"Benjamin Livshits V.","key":"e_1_2_2_31_1"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1294261.1294272"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2007.5"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1669112.1669181"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1815961.1815988"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737978"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993543"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3173162.3177154"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2015.88"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2015.7056060"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/2851141.2851149"},{"volume-title":"Proceedings of the 26th USENIX Security Symposium (USENIX Security \u201917)","year":"2017","author":"Machiry Aravind","key":"e_1_2_2_42_1"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133920"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3314613"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.14722\/ndss.2018.23309"},{"volume-title":"Proceedings of the 24th USENIX Security Symposium (USENIX Security \u201915)","year":"2015","author":"Ming Jiang","key":"e_1_2_2_46_1"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/PerCom.2013.6526735"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2524211.2524216"},{"volume-title":"Whole-system Persistence. In Proceedings of the Seventeenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVII).","year":"2012","author":"Narayanan Dushyanth","key":"e_1_2_2_49_1"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250746"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.5555\/2818754.2818863"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486862"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508249"},{"key":"e_1_2_2_54_1","volume-title":"Verification and Reliability","volume":"25","author":"Park Sangmin","year":"2012"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806838"},{"volume-title":"Memory Persistency. In Proceedings of the 41st Annual International Symposium on Computer Architecuture (ISCA \u201914)","author":"Pelley Steven","key":"e_1_2_2_56_1"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2015.46"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1809028.1806603"},{"key":"e_1_2_2_59_1","unstructured":"Proteus Digital Health. 2015. Proteus Digital Health. http:\/\/www.proteus.com\/ .  Proteus Digital Health. 2015. Proteus Digital Health. http:\/\/www.proteus.com\/ ."},{"volume-title":"Fault Tolerance via Idempotence. Principles of Programming Languages (POPL) (January","year":"2013","author":"Ramalingam G.","key":"e_1_2_2_60_1"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950386"},{"key":"e_1_2_2_62_1","first-page":"172","article-title":"RESTOP","volume":"18","author":"Arreola Alberto Rodriguez","year":"2018","journal-title":"Retaining External Peripheral State in Intermittently-Powered Sensor Systems. Sensors"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3314583"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/TIM.2008.925019"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/265924.265927"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869474"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1109\/INFOCOM.2016.7524574"},{"key":"e_1_2_2_68_1","unstructured":"TI Inc. 2017a. MSP430FR59xx Mixed-Signal Microcontrollers (Rev. F). http:\/\/www.ti.com\/lit\/ds\/symlink\/msp430fr5969.pdf .  TI Inc. 2017a. MSP430FR59xx Mixed-Signal Microcontrollers (Rev. F). http:\/\/www.ti.com\/lit\/ds\/symlink\/msp430fr5969.pdf ."},{"volume-title":"TI-RTOS: Real-Time Operating System (RTOS) for Microcontrollers (MCU)","author":"TI Inc. 2017b.","key":"e_1_2_2_69_1"},{"volume-title":"Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI \u201916)","year":"2016","author":"Der Woude Joel Van","key":"e_1_2_2_70_1"},{"volume-title":"Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI).","author":"Volos Haris","key":"e_1_2_2_71_1"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2015.54"},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/3274783.3274837"},{"key":"e_1_2_2_74_1","unstructured":"Zac Manchester. 2015. KickSat. http:\/\/zacinaction.github.io\/kicksat\/ .  Zac Manchester. 2015. KickSat. http:\/\/zacinaction.github.io\/kicksat\/ ."},{"volume-title":"Moo: A batteryless computational RFID and sensing platform. Department of Computer Science","year":"2011","author":"Zhang Hong","key":"e_1_2_2_75_1"},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/2039252.2039261"},{"key":"e_1_2_2_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/2451116.2451129"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360609","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3360609","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3360609","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:22:59Z","timestamp":1750202579000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360609"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,10,10]]},"references-count":77,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2019,10,10]]}},"alternative-id":["10.1145\/3360609"],"URL":"https:\/\/doi.org\/10.1145\/3360609","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2019,10,10]]},"assertion":[{"value":"2019-10-10","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}