skip to main content
10.1145/1088361.1088367acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
Article

Verifying fault-tolerant Erlang programs

Published: 26 September 2005 Publication History

Abstract

In this paper we target the verification of fault tolerant aspects of distributed applications written in Erlang. Erlang is unusual in several respects. First, it is one of a few functional languages that is used in industry. Secondly the programming language contains support for concurrency and distribution as well as including constructs for handling fault-tolerance.Erlang programmers, of course, mostly work with ready-made language components. Our approach to verification of fault tolerance is to verify systems built using two central components of most Erlang software, a generic server component with fault tolerance handling, and a supervisor component that restarts failed processes.To verify Erlang programs built using these components we automatically translate them into processes of the μCRL process algebra, generate their state spaces, and use a model checker to determine whether they satisfy correctness properties specified in the μ-calculus.The key observation of this paper is that, due to the usage of these higher-level design patterns (supervisors and generic servers) that structure process communication and fault recovery, the state space generated from a Erlang program, even with failures occurring, is relatively small, and can be generated automatically. Moreover the method is independent from the actual Erlang program studied, and is thus reusable.We demonstrate the approach in a case study where a server, built using the generic server component, implements a locking service for a number of client processes, and show that the server tolerates client failures.

References

[1]
T. Arts, C. B. Earle, and J. J. Sánchez-Penas. Translating erlang to μcrl. In Fourth International Conference on Application of Concurrency to System Design, June 2004.]]
[2]
T. Arts, C. Benac Earle and J. Derrick. Verifying Erlang code: a resource locker case-study, In Proc. of Int. Symposium on Formal Methods Europe, LNCS 2391, p. 183-202, Springer-Verlag, Copenhagen, Denmark, July 2002.]]
[3]
T. Arts and T. Noll. Verifying generic Erlang client-server implementations. In Proc. of IFL2000, LNCS 2011, p. 37--53, Springer Verlag, Berlin, 2000.]]
[4]
T. Arts and J. J. Sánchez-Penas. Global scheduler properties derived from local restrictions. In Proc. ACM SIGPLAN Erlang workshop, Pittsburg, USA, October 2002.]]
[5]
J. Corbett, M. Dwyer, and L. Hatcliff. Bandera: A source-level interface for model checking java programs. In Teaching and Research Demos at ICSE'00, Limerick, Ireland, June 2000.]]
[6]
CWI. μmcrl: A language and tool set to study communicating processes with data, February 1999.]]
[7]
Building a better bug-trap. Economist Technology Quarterly, June 2003.]]
[8]
E. Emerson and C.-L. Lei. Efficient model checking in fragments of the propositional mu-calculus. In Proc. LICS, pages 267--278, 1986.]]
[9]
J.-C. Fernandez, H. Garavel, A. Kerbrat, R. Mateescu, L. Mounier, and M. Sighireau. Cæsar/Aldébaran development package): A protocol validation and verification toolbox. In Proc. of CAV, LNCS 1102, p. 437--440, Springer Verlag, Berlin, 1996.]]
[10]
H. Garavel, F. Lang, and R. Mateescu. An overview of cadp 2001. European Association for Software Science and Technology (EASST) Newsletter, 4:13--24, August 2002.]]
[11]
J. F. Groote. The syntax and semantics of timed mcrl. Technical Report SEN-R9709, CWI, Amsterdam, 1997.]]
[12]
J. F. Groote, W. Fokking, and M. Reiniers. Modelling concurrent systems: Protocol verification in μCRL, April 2000.]]
[13]
K. Havelund and T. Pressburger. Model checking java programs using java pathfinder. STTT, 2(4):366--381, March 2000.]]
[14]
G. Holzmann. The Design and Validation of Computer Protocols. Pretence Hall, 1991.]]
[15]
T. Janowski and M. Joseph. Dynamic scheduling and fault-tolerance: Specification and verification. Real-Time Systems, 20:51--81, January 2001.]]
[16]
D. Kozen. Results on the propositional μ-calculus. TCS, 27:333--354, 1983.]]
[17]
R. Mateescu. Local model-checking of an alternation-free value-based modal mu-calculus. In Proceedings of the International Workshop on Software Tools for Technology Transfer STTT'98, Aalborg, Denmark, July 1998.]]
[18]
J. Rushby. Systematic formal verification for fault-tolerant time-triggered algorithms. IEEE Transactions on Software Engineering, 25(5):651--660, September 1999.]]
[19]
S. O. J. Rushby and N. Shankar. Pvs: A prototype verification system. In 11th International Conference on Automated Deduction (CADE), Deepak Kapur eds. Lecture Notes in Artificial Intelligence, volume 607, pages 748-752, Springer Verlag, Saratoga, NY, June 1992.]]
[20]
J. J. Sénchez Penas and C. Abalde Ramiro. Extending the VoDKa architecture to improve resource modeling. In proceedings of the 2nd ACM SIGPLAN Erlang Workshop (PLI'03), Uppsala, Sweden, August 2003.]]
[21]
F. Schneider, S. M. Easterbrook, J. R. Callahan, and G. H. Holzmann. Validating requirements for fault tolerant systems using model checking. In Proceedings, 3rd International Conference on Requirements Engineering, 4-13, Colorado Springs, Colorado, April 1998.]]
[22]
J. van de Pol and M. V. Espada. Formal specification of javaspaces architecture using μcrl. In Proc. of 5th int. conf. on Coordination Models and Languages, York, UK, April 2002, COORDINATION LNCS 2315, pp. 274-290, Springer Verlag, 2002.]]
[23]
A. G. Wouters. Manual for the μcrl tool set (version 2.8.2). Technical Report SEN-R0130, CWI, Amsterdam, 2001.]]

Cited By

View all
  • (2020)Towards Flexible, Fault Tolerant Hardware Service Wrappers for the Digital Manufacturing on a Shoestring ProjectIFAC-PapersOnLine10.1016/j.ifacol.2020.11.06553:3(72-77)Online publication date: 2020
  • (2017)Construction and formal verification of a fault-tolerant distributed mutual exclusion algorithmProceedings of the 16th ACM SIGPLAN International Workshop on Erlang10.1145/3123569.3123571(1-12)Online publication date: 8-Sep-2017
  • (2010)Model-checking ErlangProceedings of the 5th international academic and industrial conference on Testing - practice and research techniques10.5555/1885930.1885937(23-38)Online publication date: 3-Sep-2010
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ERLANG '05: Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
September 2005
94 pages
ISBN:1595930663
DOI:10.1145/1088361
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 September 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. code verification
  2. concurrency
  3. fault-tolerance

Qualifiers

  • Article

Conference

ERLANG05
Sponsor:

Acceptance Rates

Overall Acceptance Rate 51 of 68 submissions, 75%

Upcoming Conference

ICFP '25
ACM SIGPLAN International Conference on Functional Programming
October 12 - 18, 2025
Singapore , Singapore

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)0
Reflects downloads up to 08 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2020)Towards Flexible, Fault Tolerant Hardware Service Wrappers for the Digital Manufacturing on a Shoestring ProjectIFAC-PapersOnLine10.1016/j.ifacol.2020.11.06553:3(72-77)Online publication date: 2020
  • (2017)Construction and formal verification of a fault-tolerant distributed mutual exclusion algorithmProceedings of the 16th ACM SIGPLAN International Workshop on Erlang10.1145/3123569.3123571(1-12)Online publication date: 8-Sep-2017
  • (2010)Model-checking ErlangProceedings of the 5th international academic and industrial conference on Testing - practice and research techniques10.5555/1885930.1885937(23-38)Online publication date: 3-Sep-2010
  • (2010)Formally based tool support for model checking Erlang applicationsInternational Journal on Software Tools for Technology Transfer10.1007/s10009-010-0179-113:4(355-376)Online publication date: 2-Nov-2010
  • (2010)Model-Checking Erlang – A Comparison between EtomCRL2 and McErlangTesting – Practice and Research Techniques10.1007/978-3-642-15585-7_5(23-38)Online publication date: 2010
  • (2008)Verifying Erlang Telecommunication Systems with the Process Algebra μCRLProceedings of the 28th IFIP WG 6.1 international conference on Formal Techniques for Networked and Distributed Systems10.1007/978-3-540-68855-6_13(201-217)Online publication date: 10-Jun-2008
  • (2007)Verification of timed erlang/OTP components using the process algebra μcrlProceedings of the 2007 SIGPLAN workshop on ERLANG Workshop10.1145/1292520.1292529(55-64)Online publication date: 5-Oct-2007

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media