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.
- 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 Scholar
Digital Library
- J. Brotherston, R. Bornat, and C. Calcagno. Cyclic proofs of program termination in separation logic. pages 101--112, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- E. W. Dijkstra. Self-stabilizing systems in spite of distributed control. Communications of the ACM, 17:643--644, November 1974. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- S. Dolev and Y. A. Haviv. Self-stabilizing microprocessor: Analyzing and overcoming soft errors. IEEE Transactions on Computers, 55:385--399, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Sabelfeld and A. Myers. Language-based information-flow security. IEEE Journal on Selected Areas in Communications, 21(1):5--19, January 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- P. Wadler. Linear types can change the world! In Proceedings of the International Conference on Programming Concepts and Methods, 1990.Google Scholar
Index Terms
Self-stabilizing Java
Recommendations
Self-stabilizing Java
PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and ImplementationSelf-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 ...
A self-stabilizing link-coloring protocol resilient to unbounded byzantine faults in arbitrary networks
OPODIS'05: Proceedings of the 9th international conference on Principles of Distributed SystemsSelf-stabilizing protocols can tolerate any type and any number of transient faults. However, in general, self-stabilizing protocols provide no guarantee about their behavior against permanent faults. This paper proposes a self-stabilizing link-coloring ...
Fault-containing self-stabilizing distributed protocols
Self-stabilization is an elegant approach for designing a class of fault-tolerant distributed protocols. A self-stabilizing protocol is guaranteed to eventually converge to a legitimate state after a transient fault. However, even a minor transient ...







Comments