ACM Home Page
Please provide us with feedback. Feedback
Variably interprocedural program analysis for runtime error detection
Full text PdfPdf (276 KB)
Source
International Symposium on Software Testing and Analysis archive
Proceedings of the 2007 international symposium on Software testing and analysis table of contents
London, United Kingdom
SESSION: Hybrid analysis table of contents
Pages: 97 - 107  
Year of Publication: 2007
ISBN:978-1-59593-734-6
Authors
Aaron Tomb  Univ. of California, Santa Cruz
Guillaume Brat  RIACS/NASA Ames
Willem Visser  SEVEN Networks
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 9,   Downloads (12 Months): 56,   Citation Count: 7
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1273463.1273478
What is a DOI?

ABSTRACT

This paper describes an analysis approach based on a of static and dynamic techniques to ?nd run-time errors in Java code. It uses symbolic execution to ?nd constraints under which an error (e.g. a null pointer dereference, array out of bounds access, or assertion violation) may occur and then solves these constraints to ?nd test inputs that may expose the error. It only alerts the user to the possibility of a real error when it detects the expected exception during a program run.

The analysis is customizable in two important ways. First, we can adjust how deeply to follow calls from each top-level method. Second, we can adjust the path termination tion for the symbolic execution engine to be either a bound on the path condition length or a bound on the number of times each instruction can be revisited.

We evaluated the tool on a set of benchmarks from the literature as well as a number of real-world systems that range in size from a few thousand to 50,000 lines of code. The tool discovered all known errors in the benchmarks (as well as some not previously known) and reported on average 8 errors per 1000 lines of code for the industrial examples. In both cases the interprocedural call depth played little role in the error detection. That is, an intraprocedural analysis seems adequate for the class of errors we detect.


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
C. BarrettandS. Berezin. CVCLite: A new implementation of the cooperating validity checker. In R. Alur and D. A. Peled, editors, Proceedings of the International Conference on Computer Aided Verification volume 3114 of Lecture Notes in Computer Science pages 515--518. Springer-Verlag, July 2004.
2
 
3
C. Cadar and D. Engler. Execution generated test cases: how to make systems code crash itself. In Proceedings of the International SPIN Workshop on Model Checking of Software 2005.
 
4
T. Copeland. PMD Applied Centennial Books, Nov. 2005.
 
5
P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Min, D. Monniaux, and X. Rival. The ASTRÉE analyser. In Proceedings of the European Symposium on Programming pages 21--30, 2005.
 
6
Coverity, Inc. http://www.coverity.com
 
7
8
9
10
11
12
 
13
14
 
15
G. J. Holzmann. The Spin Model Checker Addison-Wesley, 2003.
16
 
17
S. C. Johnson. Lint, a C Program Checker BellLabs, 1978.
 
18
R. A. Kemmerer and S. T. Eckman. UNISEX: A UNIX-based symbolic executor for Pascal. Software - Practice and Experience 15(5):439--458, 1985.
 
19
S. Khurshid, C. S. Pasareanu, and W. Visser. Generalized symbolic execution for model checking and testing. In Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems 2003.
20
 
21
Klocwork, Inc. http://www.klocwork.com
22
 
23
 
24
National Institute of Standards and Technology. The economic impacts of inadequate infrastructure for software testing, May 2002.
25
 
26
T. Sakaguchi. UNISEX-C: a UNIx-based Symbolic EXecutor for standard C PhD thesis, University of California, Santa Barbara, 1997.
 
27
H. Schlenker and G. Ringwelski. POOC: A platform for object-oriented constraint programming, 2002.
28
 
29
R. Vallée-Rai, L. Hendren, V. Sundaresan, P. Lam, E. Gagnon, and P. Co. Soot -a Java optimization framework. In Proceedings of CASCON 1999 pages 125--135, 1999.
 
30
 
31
T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. Proceedings of the International Conference on Tools and Algorithms for the Construction and Analysis of Systems 3440:365--381, 2005.
 
32
 
33

CITED BY  7

Collaborative Colleagues:
Aaron Tomb: colleagues
Guillaume Brat: colleagues
Willem Visser: colleagues