A general method for rendering static analyses for diverse concurrency models modular

被引:11
作者
Stievenart, Quentin [1 ]
Nicolay, Jens [1 ]
De Meuter, Wolfgang [1 ]
De Roover, Coen [1 ]
机构
[1] Vrije Univ Brussel, Software Languages Lab, Brussels, Belgium
关键词
Static analysis; Modular analysis; Concurrency; Actors; Threads; VERIFICATION;
D O I
10.1016/j.jss.2018.10.001
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Shared-memory multi-threading and the actor model both share the notion of processes featuring communication, respectively by modifying shared state and by sending messages. Existing static analyses for concurrent programs either model every possible process interleavings and therefore suffer from the state explosion problem, or feature modularity but lack in precision or in their support for dynamic processes. In this paper we present a general method for obtaining a scalable analysis of concurrent programs featuring dynamic process creation. Our MooCoNc method transforms an abstract concurrent semantics modeling processes and communication into a modular static analysis treating the behavior of processes separately from their communication. We present MooCoNc in a generic way and demonstrate its applicability by instantiating it for multi-threaded and actor-based programs. The resulting analyses are evaluated in terms of precision, performance, scalability, and soundness. While a typical non-modular static analysis time out on half of our 56 benchmarks with a 30 min timeout, MooCoNc analyses successfully analyze all of them in less than 30 s, while remaining on par in terms of precision. Analyzing concurrent processes in isolation while modeling their communications is the key ingredient in supporting scalable analysis of concurrent programs featuring dynamic process communication. (C) 2018 Elsevier Inc. All rights reserved.
引用
收藏
页码:17 / 45
页数:29
相关论文
共 97 条
[1]   Types for safe locking: Static race detection for Java']Java [J].
Abadi, M ;
Flanagan, C ;
Freund, SN .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2006, 28 (02) :207-255
[2]  
Abelson H., 1998, Higher-Order and Symbolic Computation, V11, P7, DOI 10.1023/A:1010051815785
[3]  
Agha G. A., 1997, Journal of Functional Programming, V7, P1, DOI 10.1017/S095679689700261X
[4]  
Agha G.A., 1986, Actors: A Model of Concurrent Computation in Distributed Systems, VVolume 844
[5]  
Andreasen Esben Sparre, 2017, P 6 ACM SIGPLAN INT, P31, DOI DOI 10.1145/3088515.3088521
[6]   Applying static analysis to large-scale, multi-threaded Java']Java programs [J].
Artho, C ;
Biere, A .
2001 AUSTRALIAN SOFTWARE ENGINEERING CONFERENCE, PROCEEDINGS, 2001, :68-75
[7]  
Arts T., 1998, Automated Deduction - CADE-15. 15th International Conference on Automated Deduction. Proceedings, P38, DOI 10.1007/BFb0054244
[8]  
Arts T., 2000, SELECTED PAPERS, P37, DOI [10.1007/3-540-45361-X_3, DOI 10.1007/3-540-45361-X_3]
[9]  
Atig M. F., 2014, LIPICS LEIBN INT P I, P29
[10]  
Atig M. F., 2018, LIPICS LEIBN INT P I, P93