ACM Home Page
Please provide us with feedback. Feedback
Tracking down software bugs using automatic anomaly detection
Full text PdfPdf (1.30 MB)
Source International Conference on Software Engineering archive
Proceedings of the 24th International Conference on Software Engineering table of contents
Orlando, Florida
SESSION: Technical papers: dynamic program analysis table of contents
Pages: 291 - 301  
Year of Publication: 2002
ISBN:1-58113-472-X
Authors
Sudheendra Hangal  Sun Microsystems India Pvt. Ltd. Divyasree Chambers, Shantinagar Bangalore
Monica S. Lam  Stanford University, Stanford, CA
Sponsors
IEEE-CS\DATC : IEEE Computer Society
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 24,   Downloads (12 Months): 197,   Citation Count: 89
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

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

ABSTRACT

This paper introduces DIDUCE, a practical and effective tool that aids programmers in detecting complex program errors and identifying their root causes. By instrumenting a program and observing its behavior as it runs, DIDUCE dynamically formulates hypotheses of invariants obeyed by the program. DIDUCE hypothesizes the strictest invariants at the beginning, and gradually relaxes the hypothesis as violations are detected to allow for new behavior. The violations reported help users to catch software bugs as soon as they occur. They also give programmers new visibility into the behavior of the programs such as identifying rare corner cases in the program logic or even locating hidden errors that corrupt the program's results.We implemented the DIDUCE system for Java programs and applied it to four programs of significant size and complexity. DIDUCE succeeded in identifying the root causes of programming errors in each of the programs quickly and automatically. In particular, DIDUCE is effective in isolating a timing-dependent bug in a released JSSE (Java Secure Socket Extension) library, which would have taken an experienced programmer days to find. Our experience suggests that detecting and checking program invariants dynamically is a simple and effective methodology for debugging many different kinds of program errors across a wide variety of application domains.


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
 
2
 
3
ByteCode Engineering Library. http://www.sourceforge.net/projects/bcel
4
 
5
D. L. Detlefs, R. M. Leino, G. Nelson, J. B. Saxe. Extended Static Checking. SRC Research Reports SRC-159, Compaq SRC, December 1998.
 
6
D. Engler, B. Chelf, A. Chou and S. Hallem. Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions. In Proceedings of the Fourth Symposium on Operating System Design and Implementation, October 2000.
7
 
8
 
9
European Space Agency. Arianne-5 flight 501 Inquiry Board Report. http://ravel.esrin.esa.it/docs/esa-x-1819eng.pdf
 
10
R. Hastings and R. Joyce. Purify: Fast Detection of Memory Leaks and Access Errors. In Proceedings of the Winter Usenix Conf. pp. 125-136, January 1992.
 
11
Joeq. http://www.sourceforge.net/projects/joeq
 
12
 
13
 
14
Mailmanage: http://www.sourceforge.net/projects/mailmanage
 
15
J. Nimmer and M. D. Ernst. Static Verification of Dynamically Detected Program Invariants: Integrating Daikon and ESC/Java. In Proceedings of RV-01, The First Workshop on Runtime Verification, July 2001.
16
17
18
 
19

CITED BY  89

Collaborative Colleagues:
Sudheendra Hangal: colleagues
Monica S. Lam: colleagues