| Verifying dereference safety via expanding-scope analysis |
| Full text |
Pdf
(444 KB)
|
Source
|
International Symposium on Software Testing and Analysis
archive
Proceedings of the 2008 international symposium on Software testing and analysis
table of contents
Seattle, WA, USA
SESSION: Static analysis
table of contents
Pages 213-224
Year of Publication: 2008
ISBN:978-1-60558-050-0
|
|
Authors
|
|
Alexey Loginov
|
GrammaTech, Inc., Ithaca, NY, USA
|
|
Eran Yahav
|
IBM T.J. Watson Research Center, Hawthorne, NY, USA
|
|
Satish Chandra
|
IBM T.J. Watson Research Center, Hawthorne, NY, USA
|
|
Stephen Fink
|
IBM T.J. Watson Research Center, Hawthorne, NY, USA
|
|
Noam Rinetzky
|
Tel Aviv University, Tel Aviv, Israel
|
|
Mangala Nanda
|
IBM IRL, New Delhi, India
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 2, Downloads (12 Months): 85, Citation Count: 2
|
|
|
ABSTRACT
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Barnett, M., Leino, K., and Shulte, W. The Spec# programming system: An overview. In CASSIS (2004).
|
| |
2
|
|
| |
3
|
Cok, D. R., and Kiniry, J. ESC/Java2: Uniting ESC/Java and JML. In CASSIS (2004).
|
 |
4
|
|
| |
5
|
|
 |
6
|
Amer Diwan , Kathryn S. McKinley , J. Eliot B. Moss, Type-based alias analysis, Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, p.106-117, June 17-19, 1998, Montreal, Quebec, Canada
|
 |
7
|
Nurit Dor , Michael Rodeh , Mooly Sagiv, Detecting memory errors via static pointer analysis (preliminary experience), Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, p.27-34, June 16-16, 1998, Montreal, Quebec, Canada
|
| |
8
|
|
 |
9
|
Michael D. Ernst , Jake Cockrell , William G. Griswold , David Notkin, Dynamically discovering likely program invariants to support program evolution, Proceedings of the 21st international conference on Software engineering, p.213-224, May 16-22, 1999, Los Angeles, California, United States
[doi> 10.1145/302405.302467]
|
 |
10
|
Manuel Fähndrich , K. Rustan M. Leino, Declaring and checking non-null types in an object-oriented language, Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, October 26-30, 2003, Anaheim, California, USA
|
 |
11
|
Stephen Fink , Eran Yahav , Nurit Dor , G. Ramalingam , Emmanuel Geay, Effective typestate verification in the presence of aliasing, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
[doi> 10.1145/1146238.1146254]
|
| |
12
|
|
 |
13
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
14
|
|
| |
15
|
JSR 305: Annotations for software defect detection. http://jcp.org/en/jsr/detail?id=305.
|
| |
16
|
Larus, J., Ball, T., Das, M., DeLine, R., Fahndrich, M., Pincus, J., Rajamani, S., and Venkatapathy, R. Righting software. IEEE Software (2004).
|
 |
17
|
Thomas Reps , Susan Horwitz , Mooly Sagiv, Precise interprocedural dataflow analysis via graph reachability, Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.49-61, January 23-25, 1995, San Francisco, California, United States
[doi> 10.1145/199448.199462]
|
 |
18
|
|
 |
19
|
|
| |
20
|
|
 |
21
|
|
 |
22
|
|
| |
23
|
WALA: The T. J. Watson Libraries for Analysis. http://wala.sourceforge.net.
|
 |
24
|
|
CITED BY 2
|
|
|
|
|
Saurabh Sinha , Hina Shah , Carsten Görg , Shujuan Jiang , Mijung Kim , Mary Jean Harrold, Fault localization and repair for Java runtime exceptions, Proceedings of the eighteenth international symposium on Software testing and analysis, July 19-23, 2009, Chicago, IL, USA
|
|