Effective Techniques for Static Race Detection in Java']Java Parallel Loops

被引:9
作者
Radoi, Cosmin [1 ]
Dig, Danny [2 ]
机构
[1] Univ Illinois, Dept Comp Sci, 1304 W Springfield Ave, Urbana, IL 61801 USA
[2] Oregon State Univ, Sch Elect Engn & Comp Sci, Corvallis, OR 97331 USA
基金
美国国家科学基金会;
关键词
Reliability; Verification; Static race detection; !text type='Java']Java[!/text; synchronization; static analysis; DATA-FLOW ANALYSIS; INFERENCE; EFFICIENT; LOCKSMITH; ARRAY;
D O I
10.1145/2729975
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Despite significant progress in recent years, the important problem of static race detection remains open. Previous techniques took a general approach and looked for races by analyzing the effects induced by low-level concurrency constructs (e.g., java. lang. Thread). But constructs and libraries for expressing parallelism at a higher level (e.g., fork-join, futures, parallel loops) are becoming available in all major programming languages. We claim that specializing an analysis to take advantage of the extra semantic information provided by the use of these constructs and libraries improves precision and scalability. We present ITERACE, a set of techniques that are specialized to use the intrinsic thread, safety, and dataflow structure of collections and of the new loop parallelism mechanism introduced in Java 8. Our evaluation shows that ITERACE is fast and precise enough to be practical. It scales to programs of hundreds of thousands of lines of code and reports very few race warnings, thus avoiding a common pitfall of static analyses. In five out of the seven case studies, ITERACE reported no false warnings. Also, it revealed six bugs in real-world applications. We reported four of them: one had already been fixed, and three were new and the developers confirmed and fixed them. Furthermore, we evaluate the effect of each specialization technique on the running time and precision of the analysis. For each application, we run the analysis under 32 different configurations. This allows to analyze each technique's effect both alone and in all possible combinations with other techniques.
引用
收藏
页数:30
相关论文
共 70 条
[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]  
ADVE SV, 1991, ACM COMP AR, V19, P234, DOI 10.1145/115953.115976
[3]  
Agarwal R, 2004, LECT NOTES COMPUT SC, V2937, P149
[4]  
[Anonymous], WALA DOC
[5]  
[Anonymous], P 7 WORKSH PAR DISTR
[6]  
[Anonymous], MICR TPL
[7]  
[Anonymous], 1991, P 1991 ACM IEEE C SU
[8]  
[Anonymous], CIL BUG
[9]  
[Anonymous], YOURKIT JAV PROF
[10]  
[Anonymous], STATIC THREAD ESCAPE