TY - JOUR
T1 - HEAT
T2 - A combined approach for thread escape analysis
AU - Chen, Qichang
AU - Wang, Liqiang
AU - Yang, Zijiang
PY - 2011/6
Y1 - 2011/6
N2 - Thread escape analysis can determine whether and when a variable becomes shared by multiple threads, which is a foundation for many other program analysis and software testing techniques. Most existing escape analysis tools are either purely dynamic or static analyses. Static analysis, which considers all possible behaviors of a program, may produce false positives; whereas dynamic approaches miss the information from unexecuted code sections of a program. This paper presents a hybrid approach that integrates static and dynamic analyses to address this problem. We first perform static analysis to obtain succinct summaries of accesses to all variables and interprocedural information. Dynamic analysis is then used to confirm variable sharing; for unexecuted code, we determine the sharing of variables by performing an interprocedural synthesis based on the runtime information and static summaries. Compared to dynamic analysis, the hybrid approach is able to determine the escape property of variables in unexecuted code. Compared to static analysis, the hybrid approach produces fewer false alarms. We implemented this hybrid escape analysis in Java. Our experiments on several benchmarks and real-world applications show that the hybrid approach improves the accuracy of escape analysis compared to existing approaches and significantly reduces the performance overhead of a subsequent program analysis.
AB - Thread escape analysis can determine whether and when a variable becomes shared by multiple threads, which is a foundation for many other program analysis and software testing techniques. Most existing escape analysis tools are either purely dynamic or static analyses. Static analysis, which considers all possible behaviors of a program, may produce false positives; whereas dynamic approaches miss the information from unexecuted code sections of a program. This paper presents a hybrid approach that integrates static and dynamic analyses to address this problem. We first perform static analysis to obtain succinct summaries of accesses to all variables and interprocedural information. Dynamic analysis is then used to confirm variable sharing; for unexecuted code, we determine the sharing of variables by performing an interprocedural synthesis based on the runtime information and static summaries. Compared to dynamic analysis, the hybrid approach is able to determine the escape property of variables in unexecuted code. Compared to static analysis, the hybrid approach produces fewer false alarms. We implemented this hybrid escape analysis in Java. Our experiments on several benchmarks and real-world applications show that the hybrid approach improves the accuracy of escape analysis compared to existing approaches and significantly reduces the performance overhead of a subsequent program analysis.
KW - Concurrent program
KW - Dynamic analysis
KW - Program analysis
KW - Software testing
KW - Thread escape analysis
UR - https://www.scopus.com/pages/publications/84862139364
U2 - 10.1007/s13198-011-0069-2
DO - 10.1007/s13198-011-0069-2
M3 - 文章
AN - SCOPUS:84862139364
SN - 0975-6809
VL - 2
SP - 135
EP - 143
JO - International Journal of System Assurance Engineering and Management
JF - International Journal of System Assurance Engineering and Management
IS - 2
ER -