TY - GEN
T1 - Verifying dereference safety via expanding-scope analysis
AU - Loginov, A.
AU - Yahav, E.
AU - Chandra, S.
AU - Fink, S.
AU - Rinetzky, N.
AU - Nanda, M. G.
PY - 2008
Y1 - 2008
N2 - This paper addresses the challenging problem of verifying the safety of pointer dereferences in real Java programs. We provide an automatic approach to this problem based on a sound interprocedural analysis. We present a staged expanding-scope algorithm for interprocedural abstract interpretation, which invokes sound analysis with partial programs of increasing scope. This algorithm achieves many benefits typical of whole-program interprocedural analysis, but scales to large programs by limiting analysis to small program fragments. To address cases where the static analysis of program fragments fails to prove safety, the analysis also suggests possible annotations which, if a user accepts, ensure the desired properties. Experimental evaluation on a number of Java programs shows that we are able to verify 90% of all dereferences soundly and automatically, and further reduce the number of remaining dereferences using non-nullness annotations.
AB - This paper addresses the challenging problem of verifying the safety of pointer dereferences in real Java programs. We provide an automatic approach to this problem based on a sound interprocedural analysis. We present a staged expanding-scope algorithm for interprocedural abstract interpretation, which invokes sound analysis with partial programs of increasing scope. This algorithm achieves many benefits typical of whole-program interprocedural analysis, but scales to large programs by limiting analysis to small program fragments. To address cases where the static analysis of program fragments fails to prove safety, the analysis also suggests possible annotations which, if a user accepts, ensure the desired properties. Experimental evaluation on a number of Java programs shows that we are able to verify 90% of all dereferences soundly and automatically, and further reduce the number of remaining dereferences using non-nullness annotations.
KW - Abstract interpretation
KW - Static analysis
UR - http://www.scopus.com/inward/record.url?scp=57449104459&partnerID=8YFLogxK
U2 - 10.1145/1390630.1390657
DO - 10.1145/1390630.1390657
M3 - ???researchoutput.researchoutputtypes.contributiontobookanthology.conference???
AN - SCOPUS:57449104459
SN - 9781605580500
T3 - ISSTA'08: Proceedings of the 2008 International Symposium on Software Testing and Analysis 2008
SP - 213
EP - 223
BT - ISSTA'08
PB - Association for Computing Machinery
T2 - 2008 International Symposium on Software Testing and Analysis, ISSTA 2008
Y2 - 20 July 2008 through 24 July 2008
ER -