Erlang-Style Error Recovery for Concurrent Objects with Cooperative Scheduling

  • Georg Göri
  • Einar Broch Johnsen
  • Rudolf Schlatte
  • Volker Stolz
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8803)


Re-establishing a safe program state after an error occurred is a known problem. Manually written error-recovery code is both more difficult to test and less often executed than the main code paths, hence errors are prevalent in these parts of a program. This paper proposes a failure model for concurrent objects with cooperative scheduling that automatically re-establishes object invariants after program failures, thereby eliminating the need to manually write this problematic code. The proposed model relies on a number of features of actor-based object-oriented languages, such as asynchronous method calls, co-operative scheduling with explicit synchronization points, and communication via future variables. We show that this approach can be used to implement Erlang-style process linking, and implement a supervision tree as a proof-of-concept.


Operational Semantic Method Call Software Product Line Current Object Asynchronous Communication 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Armstrong, J.: Erlang—a survey of the language and its industrial applications. In: Proc. INAP, vol. 96 (1996)Google Scholar
  2. 2.
    Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)Google Scholar
  3. 3.
    Bjørk, J., de Boer, F.S., Johnsen, E.B., Schlatte, R., Tapia Tarifa, S.L.: User-defined schedulers for real-time concurrent objects. Innovations in Systems and Software Engineering 9(1), 29–43 (2013)CrossRefGoogle Scholar
  4. 4.
    Candea, G., Fox, A.: Crash-only software. In: Jones, M.B. (ed.) HotOS, pp. 67–72. USENIX (2003)Google Scholar
  5. 5.
    Caromel, D., Henrio, L.: A Theory of Distributed Objects. Springer (2005)Google Scholar
  6. 6.
    Chen, Z.: Java Card Technology for Smart Cards. Addison-Wesley (2000)Google Scholar
  7. 7.
    Clavel, M., Durán, F., Eker, S., Lincoln, P., Martí-Oliet, N., Meseguer, J., Talcott, C.L.: All About Maude - A High-Performance Logical Framework. LNCS, vol. 4350. Springer, Heidelberg (2007)MATHGoogle Scholar
  8. 8.
    de Boer, F.S., Clarke, D., Johnsen, E.B.: A complete guide to the future. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 316–330. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  9. 9.
    Din, C.C., Dovland, J., Johnsen, E.B., Owe, O.: Observable behavior of distributed systems: Component reasoning for concurrent objects. Journal of Logic and Algebraic Programming 81(3), 227–256 (2012)MathSciNetCrossRefMATHGoogle Scholar
  10. 10.
    Goetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D., Lea, D.: Java Concurrency in Practice. Addison-Wesley (2006)Google Scholar
  11. 11.
    Johnsen, E.B., Hähnle, R., Schäfer, J., Schlatte, R., Steffen, M.: ABS: A core language for abstract behavioral specification. In: Aichernig, B.K., de Boer, F.S., Bonsangue, M.M. (eds.) FMCO 2010. LNCS, vol. 6957, pp. 142–164. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  12. 12.
    Johnsen, E.B., Lanese, I., Zavattaro, G.: Fault in the future. In: De Meuter, W., Roman, G.-C. (eds.) COORDINATION 2011. LNCS, vol. 6721, pp. 1–15. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  13. 13.
    Johnsen, E.B., Owe, O.: An asynchronous communication model for distributed concurrent objects. Software and Systems Modeling 6(1), 35–58 (2007)CrossRefGoogle Scholar
  14. 14.
    Johnsen, E.B., Schlatte, R., Tapia Tarifa, S.L.: Modeling application-level management of virtualized resources in ABS. In: Beckert, B., Damiani, F., de Boer, F.S., Bonsangue, M.M. (eds.) FMCO 2011. LNCS, vol. 7542, pp. 89–108. Springer, Heidelberg (2013)Google Scholar
  15. 15.
    Lanese, I., Lienhardt, M., Bravetti, M., Johnsen, E.B., Schlatte, R., Stolz, V., Zavattaro, G.: Fault model design space for cooperative concurrency. In: Margaria, T., Steffen, B. (eds.) ISoLA 2014, Part II. LNCS, vol. 8803, pp. 22–36. Springer, Heidelberg (2014)Google Scholar
  16. 16.
    Lanese, I., Mezzina, C.A., Schmitt, A., Stefani, J.-B.: Controlling reversibility in higher-order Pi. In: Katoen, J.-P., König, B. (eds.) CONCUR 2011. LNCS, vol. 6901, pp. 297–311. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  17. 17.
    Mostowski, W.: Formal reasoning about non-atomic Java Card methods in dynamic logic. In: Misra, J., Nipkow, T., Sekerinski, E. (eds.) FM 2006. LNCS, vol. 4085, pp. 444–459. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  18. 18.
    Nyström, J., Jonsson, B.: Extracting the process structure of Erlang applications. In: Erlang Workshop, Florence, Italy (September 2002),
  19. 19.
    Vinoski, S.: Reliability with Erlang. IEEE Internet Computing 11(6), 79–81 (2007)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Georg Göri
    • 1
  • Einar Broch Johnsen
    • 2
  • Rudolf Schlatte
    • 2
  • Volker Stolz
    • 2
  1. 1.University of TechnologyGrazAustria
  2. 2.University of OsloNorway

Personalised recommendations