skip to main content
research-article
Open Access

I/O dependent idempotence bugs in intermittent systems

Published:10 October 2019Publication History
Skip Abstract Section

Abstract

Intermittently-powered, energy-harvesting devices operate on energy collected from their environment and must operate intermittently as energy is available.

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 non-idempotent program behavior—behavior that can change on each execution—can lead to incorrect results.

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.

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.

Skip Supplemental Material Section

Supplemental Material

a183-surbatovich.webm

webm

83.2 MB

References

  1. Henko Aantjes, Amjad Y Majid, Przemyslaw Pawełczak, Jethro Tan, Aaron Parks, and Joshua R Smith. 2017. Fast downstream to many (computational) RFIDs. In Proceedings of the 36th Annual IEEE International Conference on Computer Communications (INFOCOM ’17).Google ScholarGoogle ScholarCross RefCross Ref
  2. Domenico Balsamo, Alex S Weddell, Anup Das, Alberto Rodriguez Arreola, Davide Brunelli, Bashir M Al-Hashimi, Geoff V Merrett, and Luca Benini. 2016. Hibernus++: a self-calibrating and adaptive system for transiently-powered embedded devices. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 35, 12 (2016), 1968–1980.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Domenico Balsamo, Alex S Weddell, Geoff V Merrett, Bashir M Al-Hashimi, Davide Brunelli, and Luca Benini. 2015. Hibernus: Sustaining computation during intermittent supply for energy-harvesting systems. IEEE Embedded Systems Letters 7, 1 (2015), 15–18.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Naama Ben-David, Guy E. Blelloch, Michal Friedman, and Yuanhao Wei. 2019. Delay-Free Concurrency on Faulty Persistent Memory. In Proceedings of the 31st ACM Symposium on Parallelism in Algorithms and Architectures (SPAA ’19). New York, NY, USA, 12.Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Gautier Berthou, Tristan Delizy, Kevin Marquet, Tanguy Risset, and Guillaume Salagnac. 2017. Peripheral state persistence for transiently-powered systems. In Proceedings of the 2017 Global Internet of Things Summit (GIoTS ’17). IEEE.Google ScholarGoogle ScholarCross RefCross Ref
  6. Naveed Anwar Bhatti and Luca Mottola. 2017. HarvOS: Efficient code instrumentation for transiently-powered embedded sensing. In Proceedings of the 16th ACM/IEEE International Conference on Information Processing in Sensor Networks (IPSN ’17).Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Quan Chen and Alexandros Kapravelos. 2018. Mystique: Uncovering Information Leakage from Browser Extensions. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS ’18). ACM, New York, NY, USA, 1687–1700.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Joel Coburn, Adrian M. Caulfield, Ameen Akel, Laura M. Grupp, Rajesh K. Gupta, Ranjit Jhala, and Steven Swanson. 2011. NV-Heaps: Making Persistent Objects Fast and Safe with Next-generation, Non-volatile Memories. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI).Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Alexei Colin, Graham Harvey, Brandon Lucia, and Alanson P. Sample. 2016. An Energy-interference-free Hardware-Software Debugger for Intermittent Energy-harvesting Systems. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16).Google ScholarGoogle Scholar
  10. Alexei Colin and Brandon Lucia. 2016. Chain: Tasks and Channels for Reliable Intermittent Programs. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Alexei Colin and Brandon Lucia. 2018. Termination checking and task decomposition for task-based intermittent programs. In Proceedings of the 27th International Conference on Compiler Construction (CC ’18).Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Alexei Colin, Emily Ruppel, and Brandon Lucia. 2018. A Reconfigurable Energy Storage Architecture for Energy-harvesting Devices. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’18).Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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.Google ScholarGoogle Scholar
  14. Marc De Kruijf and Karthikeyan Sankaralingam. 2013. Idempotent code generation: Implementation, analysis, and evaluation. In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO ’13).Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Marc A. de Kruijf, Karthikeyan Sankaralingam, and Somesh Jha. 2012. Static Analysis and Compiler Design for Idempotent Processing. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’12).Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Subramanya R Dulloor, Sanjay Kumar, Anil Keshavamurthy, Philip Lantz, Dheeraj Reddy, Rajesh Sankaran, and Jeff Jackson. 2014. System software for persistent memory. In Proceedings of the Ninth European Conference on Computer Systems (EuroSys ’14).Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. William Enck, Peter Gilbert, Byung-Gon Chun, Landon P. Cox, Jaeyeon Jung, Patrick McDaniel, and Anmol N. Sheth. 2010. TaintDroid: An Information-flow Tracking System for Realtime Privacy Monitoring on Smartphones. In Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation (OSDI’10). Berkeley, CA, USA, 393–407.Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 .Google ScholarGoogle Scholar
  19. Xiaochen Guo, Engin Ipek, and Tolga Soyata. 2010. Resistive Computation: Avoiding the Power Wall with Low-leakage, ST T-MRAM Based Computing. SIGARCH Computer Architecture News 38, 3 (June 2010), 371–382.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Josiah Hester and Jacob Sorber. 2017. Flicker: Rapid Prototyping for the Batteryless Internet-of-Things. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems (EnSys ’17).Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Josiah Hester, Kevin Storer, and Jacob Sorber. 2017. Timely Execution on Intermittently Powered Batteryless Sensors. In Proceedings of the 15th ACM Conference on Embedded Network Sensor Systems (EnSys ’17).Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Matthew Hicks. 2017. Clank: Architectural Support for Intermittent Computation. In Proceedings of the 44th Annual International Symposium on Computer Architecture (ISCA ’17).Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Jeff Huang, Patrick O’Neil Meredith, and Grigore Rosu. 2014. Maximal Sound Predictive Race Detection with Control Flow Abstraction. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’14). 337–348.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Joseph Izraelevitz, Terence Kelly, and Aasheesh Kolli. 2016. Failure-Atomic Persistent Memory Updates via JUSTDO Logging. In Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’16). New York, NY, USA, 16.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Hrishikesh Jayakumar, Arnab Raha, and Vijay Raghunathan. 2014. QuickRecall: A low overhead HW/SW approach for enabling computations across power cycles in transiently powered computers. In Proceedings of the 27th International Conference on VLSI Design and 2014 13th International Conference on Embedded Systems.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Nenad Jovanovic, Christopher Kruegel, and Engin Kirda. 2010. Static Analysis for Detecting Taint-style Vulnerabilities in Web Applications. J. Comput. Secur. 18, 5 (Sept. 2010), 861–907.Google ScholarGoogle Scholar
  27. Chih-Kai Kang, Chun-Han Lin, Pi-Cheng Hsiu, and Ming-Syan Chen. 2018. HomeRun: HW/SW Co-Design for Program Atomicity on Self-Powered Intermittent Systems. In Proceedings of the International Symposium on Low Power Electronics and Design (ISLPED ’18). Article 29.Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Sukun Kim, Shamim Pakzad, David Culler, James Demmel, Gregory Fenves, Steven Glaser, and Martin Turon. 2007. Health Monitoring of Civil Infrastructures Using Wireless Sensor Networks. In Proceedings of the 6th International Conference on Information Processing in Sensor Networks (IPSN ’07).Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Sebastian Lekies, Ben Stock, and Martin Johns. 2013. 25 million flows later: large-scale detection of DOM-based XSS. In Proceedings of the 2013 ACM SIGSAC conference on Computer and communications security (CCS ’13). ACM, New York, NY, USA, 1193–1204.Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Q. Liu, J. Izraelevitz, S. K. Lee, M. L. Scott, S. H. Noh, and C. Jung. 2018. iDO: Compiler-Directed Failure Atomicity for Nonvolatile Memory. In Proceedings of the 51st Annual IEEE/ACM International Symposium on Microarchitecture (MICRO 51). 258–270.Google ScholarGoogle Scholar
  31. V. Benjamin Livshits and Monica S. Lam. 2005. Finding Security Vulnerabilities in Java Applications with Static Analysis. In Proceedings of the 14th Conference on USENIX Security Symposium (USENIX Security ’05).Google ScholarGoogle Scholar
  32. Shan Lu, Soyeon Park, Chongfeng Hu, Xiao Ma, Weihang Jiang, Zhenmin Li, Raluca A. Popa, and Yuanyuan Zhou. 2007a. MUVI: Automatically Inferring Multi-variable Access Correlations and Detecting Related Semantic and Concurrency Bugs. In Proceedings of the Twenty-first ACM SIGOPS Symposium on Operating Systems Principles (SOSP ’07).Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Shan Lu, Joseph Tucek, Feng Qin, and Yuanyuan Zhou. 2007b. AVIO: Detecting Atomicity Violations via Access-Interleaving Invariants. IEEE Micro 27, 1 (Jan. 2007), 26–35.Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Brandon Lucia and Luis Ceze. 2009. Finding Concurrency Bugs with Context-aware Communication Graphs. In Proceedings of the 42Nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO 42).Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Brandon Lucia, Luis Ceze, and Karin Strauss. 2010. ColorSafe: Architectural Support for Debugging and Dynamically Avoiding Multi-variable Atomicity Violations. In Proceedings of the 37th Annual International Symposium on Computer Architecture (ISCA ’10).Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Brandon Lucia and Benjamin Ransford. 2015. A Simpler, Safer Programming and Execution Model for Intermittent Systems. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Brandon Lucia, Benjamin P. Wood, and Luis Ceze. 2011. Isolating and Understanding Concurrency Errors Using Reconstructed Execution Fragments. In Proceedings of the 32Nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’11).Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Kaisheng Ma, Xueqing Li, Mahmut Taylan Kandemir, Jack Sampson, Vijaykrishnan Narayanan, Jinyang Li, Tongda Wu, Zhibo Wang, Yongpan Liu, and Yuan Xie. 2018. NEOFog: Nonvolatility-Exploiting Optimizations for Fog Computing. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’18).Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Kaisheng Ma, Xueqing Li, Shuangchen Li, Yongpan Liu, John Jack Sampson, Yuan Xie, and Vijaykrishnan Narayanan. 2015a. Nonvolatile processor architecture exploration for energy-harvesting applications. IEEE Micro 35, 5 (2015), 32–40.Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Kaisheng Ma, Yang Zheng, Shuangchen Li, Karthik Swaminathan, Xueqing Li, Yongpan Liu, Jack Sampson, Yuan Xie, and Vijaykrishnan Narayanan. 2015b. Architecture exploration for ambient energy harvesting nonvolatile processors. In Proceedings of the IEEE 21st International Symposium on High Performance Computer Architecture (HPCA ’15).Google ScholarGoogle ScholarCross RefCross Ref
  41. Nuno Machado, Brandon Lucia, and Luís Rodrigues. 2016. Production-guided Concurrency Debugging. In Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’16). 29:1–29:12.Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Aravind Machiry, Chad Spensky, Jake Corina, Nick Stephens, Christopher Kruegel, and Giovanni Vigna. 2017. DR. CHECKER: A Soundy Analysis for Linux Kernel Drivers. In Proceedings of the 26th USENIX Security Symposium (USENIX Security ’17). Vancouver, BC.Google ScholarGoogle Scholar
  43. Kiwan Maeng, Alexei Colin, and Brandon Lucia. 2017. Alpaca: Intermittent Execution Without Checkpoints. Proc. ACM Program. Lang. 1, OOPSLA, Article 96 (Oct. 2017), 96:1–96:30 pages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Kiwan Maeng and Brandon Lucia. 2019. Supporting Peripherals in Intermittent Systems with Just-In-Time Checkpoints. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’19).Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. William Melicher, Anupam Das, Mahmood Sharif, Lujo Bauer, and Limin Jia. 2018. Riding out DOMsday: Towards Detecting and Preventing DOM Cross-Site Scripting. 2018 Network and Distributed System Security Symposium (NDSS) (Feb 2018).Google ScholarGoogle ScholarCross RefCross Ref
  46. Jiang Ming, Dinghao Wu, Gaoyao Xiao, Jun Wang, and Peng Liu. 2015. TaintPipe: Pipelined Symbolic Taint Analysis. In Proceedings of the 24th USENIX Security Symposium (USENIX Security ’15).Google ScholarGoogle Scholar
  47. Azalia Mirhoseini, Ebrahim M Songhori, and Farinaz Koushanfar. 2013. Idetic: A high-level synthesis approach for enabling long computations on transiently-powered ASICs. In Proceedings of the 2013 IEEE International Conference on Pervasive Computing and Communications (PerCom ’13).Google ScholarGoogle ScholarCross RefCross Ref
  48. Iulian Moraru, David G Andersen, Michael Kaminsky, Niraj Tolia, Parthasarathy Ranganathan, and Nathan Binkert. 2013. Consistent, durable, and safe memory management for byte-addressable non volatile main memory. In Proceedings of the First ACM SIGOPS Conference on Timely Results in Operating Systems (TRIOS ’13).Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Dushyanth Narayanan and Orion Hodson. 2012. Whole-system Persistence. In Proceedings of the Seventeenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVII).Google ScholarGoogle Scholar
  50. Nicholas Nethercote and Julian Seward. 2007. Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation. In Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’07). ACM, New York, NY, USA, 89–100.Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Adrian Nistor, Po-Chun Chang, Cosmin Radoi, and Shan Lu. 2015. Caramel: Detecting and Fixing Performance Problems That Have Non-intrusive Fixes. In Proceedings of the 37th International Conference on Software Engineering - Volume 1 (ICSE ’15). Piscataway, NJ, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Adrian Nistor, Linhai Song, Darko Marinov, and Shan Lu. 2013. Toddler: Detecting Performance Problems via Similar Memory-access Patterns. In Proceedings of the 2013 International Conference on Software Engineering (ICSE ’13). Piscataway, NJ, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Soyeon Park, Shan Lu, and Yuanyuan Zhou. 2009. CTrigger: Exposing Atomicity Violation Bugs from Their Hiding Places. In Proceedings of the 14th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XIV).Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Sangmin Park, Richard Vuduc, and Mary Harrold. 2012. UNICORN: A unified approach for localizing non-deadlock concurrency bugs. In Software Testing, Verification and Reliability, Vol. 25.Google ScholarGoogle Scholar
  55. Sangmin Park, Richard W. Vuduc, and Mary Jean Harrold. 2010. Falcon: Fault Localization in Concurrent Programs. In Proceedings of the 32Nd ACM/IEEE International Conference on Software Engineering - Volume 1 (ICSE ’10).Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Steven Pelley, Peter M. Chen, and Thomas F. Wenisch. 2014. Memory Persistency. In Proceedings of the 41st Annual International Symposium on Computer Architecuture (ISCA ’14). Piscataway, NJ, USA.Google ScholarGoogle Scholar
  57. Steven Pelley, Peter M Chen, and Thomas F Wenisch. 2015. Memory Persistency: Semantics for Byte-Addressable Nonvolatile Memory Technologies. IEEE Micro 35, 3 (2015), 125–131.Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Prakash Prabhu, Ganesan Ramalingam, and Kapil Vaswani. 2010. Safe Programmable Speculative Parallelism. ACM SIGPLAN Notices 45, 50–61.Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Proteus Digital Health. 2015. Proteus Digital Health. http://www.proteus.com/ .Google ScholarGoogle Scholar
  60. G. Ramalingam and Kapil Vaswani. 2013. Fault Tolerance via Idempotence. Principles of Programming Languages (POPL) (January 2013). https://www.microsoft.com/en- us/research/publication/fault- tolerance- via- idempotence/Google ScholarGoogle Scholar
  61. Benjamin Ransford, Jacob Sorber, and Kevin Fu. 2011. Mementos: System Support for Long-running Computation on RFID-scale Devices. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI).Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Alberto Rodriguez Arreola, Domenico Balsamo, Geoff V Merrett, and Alex S Weddell. 2018. RESTOP: Retaining External Peripheral State in Intermittently-Powered Sensor Systems. Sensors 18, 1 (2018), 172.Google ScholarGoogle Scholar
  63. Emily Ruppel and Brandon Lucia. 2019. Transactional Concurrency for Intermittent Systems. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’19).Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Alanson P Sample, Daniel J Yeager, Pauline S Powledge, Alexander V Mamishev, and Joshua R Smith. 2008. Design of an RFID-based battery-free programmable sensing platform. IEEE Transactions on Instrumentation and Measurement 57, 11 (2008).Google ScholarGoogle ScholarCross RefCross Ref
  65. Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas Anderson. 1997. Eraser: A Dynamic Data Race Detector for Multithreaded Programs. ACM Trans. Comput. Syst. 15, 4 (Nov. 1997), 391–411.Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Yao Shi, Soyeon Park, Zuoning Yin, Shan Lu, Yuanyuan Zhou, Wenguang Chen, and Weimin Zheng. 2010. Do I Use the Wrong Definition?: DeFuse: Definition-use Invariants for Detecting Concurrency and Sequential Bugs. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’10).Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Jethro Tan, Przemysław Pawełczak, Aaron Parks, and Joshua R Smith. 2016. Wisent: Robust downstream communication and storage for computational RFIDs. In Proceedings of the 35th Annual IEEE International Conference on Computer Communications (INFOCOM ’16).Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. TI Inc. 2017a. MSP430FR59xx Mixed-Signal Microcontrollers (Rev. F). http://www.ti.com/lit/ds/symlink/msp430fr5969.pdf .Google ScholarGoogle Scholar
  69. TI Inc. 2017b. TI-RTOS: Real-Time Operating System (RTOS) for Microcontrollers (MCU). http://www.ti.com/tool/ti- rtosmcu Accessed: 2018-05-08.Google ScholarGoogle Scholar
  70. Joel Van Der Woude and Matthew Hicks. 2016. Intermittent computation without hardware support or programmer intervention. In Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI ’16).Google ScholarGoogle Scholar
  71. Haris Volos, Andres Jaan Tack, and Michael M. Swift. 2011. Mnemosyne: Lightweight Persistent Memory. In Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XVI).Google ScholarGoogle Scholar
  72. Fabian Yamaguchi, Alwin Maier, Hugo Gascon, and Konrad Rieck. 2015. Automatic Inference of Search Patterns for Taint-Style Vulnerabilities. In Proceedings of the 2015 IEEE Symposium on Security and Privacy (SP ’15).Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Kasim Sinan Yildirim, Amjad Yousef Majid, Dimitris Patoukas, Koen Schaper, Przemyslaw Pawelczak, and Josiah Hester. 2018. InK: Reactive Kernel for Tiny Batteryless Sensors. In Proceedings of the 16th ACM Conference on Embedded Networked Sensor Systems (SenSys ’18). New York, NY, USA, 41–53.Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Zac Manchester. 2015. KickSat. http://zacinaction.github.io/kicksat/ .Google ScholarGoogle Scholar
  75. Hong Zhang, Jeremy Gummeson, Benjamin Ransford, and Kevin Fu. 2011a. Moo: A batteryless computational RFID and sensing platform. Department of Computer Science, University of Massachusetts Amherst., Tech. Rep (2011).Google ScholarGoogle Scholar
  76. Hong Zhang, Mastooreh Salajegheh, Kevin Fu, and Jacob Sorber. 2011b. Ekho: Bridging the Gap Between Simulation and Reality in Tiny Energy-harvesting Sensors. In Proceedings of the 4th Workshop on Power-Aware Computing and Systems (HotPower ’11). Article 9.Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Wei Zhang, Marc de Kruijf, Ang Li, Shan Lu, and Karthikeyan Sankaralingam. 2013. ConAir: Featherweight Concurrency Bug Recovery via Single-threaded Idempotent Execution. In Proceedings of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’13).Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. I/O dependent idempotence bugs in intermittent systems

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image Proceedings of the ACM on Programming Languages
      Proceedings of the ACM on Programming Languages  Volume 3, Issue OOPSLA
      October 2019
      2077 pages
      EISSN:2475-1421
      DOI:10.1145/3366395
      Issue’s Table of Contents

      Copyright © 2019 Owner/Author

      This work is licensed under a Creative Commons Attribution International 4.0 License.

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 10 October 2019
      Published in pacmpl Volume 3, Issue OOPSLA

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader