Leader Election in the Presence of Link Failures
IEEE Transactions on Parallel and Distributed Systems
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Formal verification of a leader election protocol in process algebra
ACP '95 Proceedings from the international workshop on Algebra of communicating processes
Science of Computer Programming - Special issue on COST 247, verification and validation methods for formal descriptions
A Timed Verification of the IEEE 1394 Leader Election Protocol
Formal Methods in System Design
Trace analysis of Erlang programs
Proceedings of the 2002 ACM SIGPLAN workshop on Erlang
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Runtime safety analysis of multithreaded programs
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
An Overview of the Runtime Verification Tool Java PathExplorer
Formal Methods in System Design
ACSD '04 Proceedings of the Fourth International Conference on Application of Concurrency to System Design
Development of a verified Erlang program for resource locking
International Journal on Software Tools for Technology Transfer (STTT)
Design and analysis of dynamic leader election protocols in broadcast networks
Distributed Computing
A new leader election implementation
Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
A semantics for distributed Erlang
Proceedings of the 2005 ACM SIGPLAN workshop on Erlang
Model checking erlang programs: the functional approach
Proceedings of the 2006 ACM SIGPLAN workshop on Erlang
McErlang: a model checker for a distributed functional programming language
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Extended process registry for erlang
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
A more accurate semantics for distributed erlang
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Finding counter examples in induction proofs
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
Chain replication in theory and in practice
Proceedings of the 9th ACM SIGPLAN workshop on Erlang
Property-based testing: the ProTest project
FMCO'09 Proceedings of the 8th international conference on Formal methods for components and objects
TransDPOR: a novel dynamic partial-order reduction technique for testing actor programs
FMOODS'12/FORTE'12 Proceedings of the 14th joint IFIP WG 6.1 international conference and Proceedings of the 32nd IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems
Riak PG: distributed process groups on dynamo-style distributed storage
Proceedings of the twelfth ACM SIGPLAN workshop on Erlang
Hi-index | 0.00 |
We present a semi-formal analysis method for fault-tolerant distributed algorithms written in the distributed functional programming language Erlang. In this setting, standard model checking techniques are often too expensive or too limiting, whereas testing techniques often do not cover enough of the state space. Our idea is to first run instances of the algorithm on generated stimuli, thereby creating traces of events and states. Then, using an abstraction function specified by the user, our tool generates from these traces an abstract state transition diagram of the system, which can be nicely visualized and thus greatly helps in debugging the system. Lastly, formal requirements of the system specified in temporal logic can be checked automatically to hold for the generated abstract state transition diagram. Because the state transition diagram is abstract, we know that the checked requirements hold for a lot more traces than just the traces we actually ran. We have applied our method to a commonly used open-source fault-tolerant leader election algorithm, and discovered two serious bugs. We have also implemented a new algorithm that does not have these bugs.