skip to main content
research-article

Self-stabilizing Java

Published:11 June 2012Publication History
Skip Abstract Section

Abstract

Self-stabilizing programs automatically recover from state corruption caused by software bugs and other sources to reach the correct state. A number of applications are inherently self-stabilizing---such programs typically overwrite all non-constant data with new input data. We present a type system and static analyses that together check whether a program is self-stabilizing. We combine this with a code generation strategy that ensures that a program continues executing long enough to self-stabilize. Our experience using SJava indicates that (1) SJava annotations are easy to write once one understands a program and (2) SJava successfully checked that several benchmarks were self-stabilizing.

References

  1. A. Bradley, Z. Manna, and H. Sipma. Termination of polynomial programs. In Proceedings of Verification, Model Checking, and Abstract Interpretation, volume 3385, pages 113--129. 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. J. Brotherston, R. Bornat, and C. Calcagno. Cyclic proofs of program termination in separation logic. pages 101--112, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 415--426, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Cook, A. Podelski, and A. Rybalchenko. Proving thread termination. In Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 320--330, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. B. Demsky and M. Rinard. Data structure repair using goal-directed reasoning. In Proceedings of the 27th International Conference on Software Engineering, pages 176--185, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. E. W. Dijkstra. Self-stabilizing systems in spite of distributed control. Communications of the ACM, 17:643--644, November 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Dolev, Y. Haviv, and M. Sagiv. Self-stabilization preserving compiler. ACM Transactions on Programming Languages and Systems, 31:22:1--22:42, August 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Dolev and Y. A. Haviv. Self-stabilizing microprocessor: Analyzing and overcoming soft errors. IEEE Transactions on Computers, 55:385--399, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Dolev and R. Yagel. Toward self-stabilizing operating systems. In Proceedings of the 15th International Conference on Database and Expert Systems Applications, pages 684--688, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Fahndrich and R. DeLine. Adoption and focus: practical linear types for imperative programming. In Proceedings of the 2002 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 13--24, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. P. Haller and M. Odersky. Capabilities for uniqueness and borrowing. In Proceedings of the 24th European Conference on Object-Oriented Programming, pages 354--378, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. C. Myers. JFlow: Practical mostly-static information flow control. In Proceedings of the Symposium on Principles of Programming Languages, pages 228--241, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Rinard, C. Cadar, D. Dumitran, D. M. Roy, T. Leu, and W. S. Beebee, Jr. Enhancing server availability and security through failure-oblivious computing. In Proceedings of the 6th Symposium on Operating Systems Design and Implementation, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. C. Rinard. Living in the comfort zone. In Proceeding of the 22nd ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. A. Sabelfeld and A. Myers. Language-based information-flow security. IEEE Journal on Selected Areas in Communications, 21(1):5--19, January 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. A. Sampson, W. Dietl, E. Fortuna, D. Gnanapragasam, L. Ceze, and D. Grossman. EnerJ: Approximate data types for safe and general low-power computation. In Proceedings of the 2011 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 164--174, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Sidiroglou, M. E. Locasto, S. W. Boyd, and A. D. Keromytis. Building a reactive immune system for software services. In Proceedings of the USENIX Annual Technical Conference, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. F. Spoto, F. Mesnard, and E. Payet. A termination analyzer for Java bytecode based on path-length. ACM Transactions on Programming Languages and Systems, 32:8:1--8:70, March 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Wadler. Linear types can change the world! In Proceedings of the International Conference on Programming Concepts and Methods, 1990.Google ScholarGoogle Scholar

Index Terms

  1. Self-stabilizing Java

      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 ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 47, Issue 6
        PLDI '12
        June 2012
        534 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2345156
        Issue’s Table of Contents
        • cover image ACM Conferences
          PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2012
          572 pages
          ISBN:9781450312059
          DOI:10.1145/2254064

        Copyright © 2012 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 11 June 2012

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!