skip to main content
10.1145/2414639.2414658acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Soter: an automatic safety verifier for erlang

Published: 21 October 2012 Publication History

Abstract

This paper presents Soter, a fully-automatic program analyser and verifier for Erlang modules. The fragment of Erlang accepted by Soter includes the higher-order functional constructs and all the key features of actor concurrency, namely, dynamic and possibly unbounded spawning of processes and asynchronous message passing. Soter uses a combination of static analysis and infinite-state model checking to verify safety properties specified by the user. Given an Erlang module and a set of properties, Soter first extracts an abstract (approximate but sound) model in the form of an actor communicating system (ACS), and then checks if the properties are satisfied using a Petri net coverability checker, BFC. To our knowledge, Soter is the first fully-automatic, infinite-state model checker for a large fragment of Erlang. We find that in practice our abstraction technique is accurate enough to verify an interesting range of safety properties such as mutual-exclusion and boundedness of mailboxes. Though the ACS coverability problem is Expspace-complete, Soter can analyse these problems surprisingly efficiently.

References

[1]
G. Agha. Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge, MA, USA, 1986.
[2]
J. Armstrong. Erlang. CACM, 53(9):68, 2010.
[3]
F. Cesarini and S. Thompson. Erlang Programming - A Concurrent Approach to Software Development. O'Reilly, 2009.
[4]
M. Christakis and K. Sagonas. Detection of asynchronous message passing errors using static analysis. PADL, pages 5--18, 2011.
[5]
E. D'Osualdo, J. Kochems, and C.-H. L. Ong. Automatic verification of Erlang-style concurrency. Technical report, University of Oxford DCS, 2012. http://mjolnir.cs.ox.ac.uk/soter/soterpaper.pdf.
[6]
L. Fredlund and H. Svensson. McErlang: a model checker for a distributed functional programming language. In ICFP, pages 125--136, 2007.
[7]
Q. Guo and J. Derrick. Verification of timed Erlang/OTP components using the process algebra μCRL. In Erlang Workshop, pages 55--64, 2007.
[8]
A. Kaiser, D. Kroening, and T. Wahl. Efficient coverability analysis by proof minimization. In CONCUR, 2012.
[9]
T. Lindahl and K. Sagonas. Practical type inference based on success typings. In PPDP, pages 167--178, 2006.

Cited By

View all
  • (2019)Pretend synchrony: synchronous verification of asynchronous distributed programsProceedings of the ACM on Programming Languages10.1145/32903723:POPL(1-30)Online publication date: 2-Jan-2019
  • (2018)Automatic detection of core Erlang message passing errorsProceedings of the 17th ACM SIGPLAN International Workshop on Erlang10.1145/3239332.3242765(37-48)Online publication date: 29-Sep-2018
  • (2017)Verifying distributed programs via canonical sequentializationProceedings of the ACM on Programming Languages10.1145/31339341:OOPSLA(1-27)Online publication date: 12-Oct-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
AGERE! 2012: Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
October 2012
150 pages
ISBN:9781450316309
DOI:10.1145/2414639
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: 21 October 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. erlang
  2. infinite-state model checking
  3. petri nets
  4. static analysis
  5. verification

Qualifiers

  • Research-article

Conference

SPLASH '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 19 of 35 submissions, 54%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)9
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Pretend synchrony: synchronous verification of asynchronous distributed programsProceedings of the ACM on Programming Languages10.1145/32903723:POPL(1-30)Online publication date: 2-Jan-2019
  • (2018)Automatic detection of core Erlang message passing errorsProceedings of the 17th ACM SIGPLAN International Workshop on Erlang10.1145/3239332.3242765(37-48)Online publication date: 29-Sep-2018
  • (2017)Verifying distributed programs via canonical sequentializationProceedings of the ACM on Programming Languages10.1145/31339341:OOPSLA(1-27)Online publication date: 12-Oct-2017
  • (2017)The Logical View on Continuous Petri NetsACM Transactions on Computational Logic10.1145/310590818:3(1-28)Online publication date: 4-Aug-2017
  • (2013)Safety verification of asynchronous pushdown systems with shaped stacksProceedings of the 24th international conference on Concurrency Theory10.1007/978-3-642-40184-8_21(288-302)Online publication date: 27-Aug-2013
  • (2013)Automatic Verification of Erlang-Style ConcurrencyStatic Analysis10.1007/978-3-642-38856-9_24(454-476)Online publication date: 2013

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