Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Higher-order concurrent programs with finite communication topology (extended abstract)
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analyzing the communication topology of concurrent programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Infinitary control flow analysis: a collecting semantics for closure analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Principles of Program Analysis
Principles of Program Analysis
An Algorithm for Analyzing Communicating Processes
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
Communication Topology Analysis for Concurrent Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Practical type inference based on success typings
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Message analysis for concurrent programs using message passing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming Erlang: Software for a Concurrent World
Programming Erlang: Software for a Concurrent World
Static detection of race conditions in erlang
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Research in concurrent software testing: a systematic review
Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Session typing for a featherweight Erlang
COORDINATION'11 Proceedings of the 13th international conference on Coordination models and languages
Soter: an automatic safety verifier for erlang
Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
Static analysis of concurrent programs by adapted vector clock
Proceedings of the International C* Conference on Computer Science and Software Engineering
Hi-index | 0.00 |
Concurrent programming is hard and prone to subtle errors. In this paper we present a static analysis that is able to detect some commonly occurring kinds of message passing errors in languages with dynamic process creation and communication based on asynchronous message passing. Our analysis is completely automatic, fast, and strikes a proper balance between soundness and completeness: it is effective in detecting errors and avoids false alarms by computing a close approximation of the interprocess communication topology of programs. We have integrated our analysis in dialyzer, a widely used tool for detecting software defects in Erlang programs, and demonstrate its effectiveness on libraries and applications of considerable size. Despite the fact that these applications have been developed over a long period of time and are reasonably well-tested, our analysis has managed to detect a significant number of previously unknown message passing errors in their code.