ACM Home Page
Please provide us with feedback. Feedback
DSD-Crasher: A hybrid analysis tool for bug finding
Full text PdfPdf (393 KB)
Source
ACM Transactions on Software Engineering and Methodology (TOSEM) archive
Volume 17 ,  Issue 2  (April 2008) table of contents
Article No. 8  
Year of Publication: 2008
ISSN:1049-331X
Authors
Christoph Csallner  Georgia Institute of Technology
Yannis Smaragdakis  University of Oregon
Tao Xie  North Carolina State University
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 33,   Downloads (12 Months): 233,   Citation Count: 1
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/1348250.1348254
What is a DOI?

ABSTRACT

DSD-Crasher is a bug finding tool that follows a three-step approach to program analysis:

D. Capture the program's intended execution behavior with dynamic invariant detection. The derived invariants exclude many unwanted values from the program's input domain.

S. Statically analyze the program within the restricted input domain to explore many paths.

D. Automatically generate test cases that focus on reproducing the predictions of the static analysis. Thereby confirmed results are feasible.

This three-step approach yields benefits compared to past two-step combinations in the literature. In our evaluation with third-party applications, we demonstrate higher precision over tools that lack a dynamic step and higher efficiency over tools that lack a static step.


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
Anand, S., Godefroid, P., and Tillmann, N. 2008. Demand-driven compositional symbolic execution. In Proceedings of the 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, To appear.
 
2
Anand, S., Pasareanu, C., and Visser, W. 2007. JPF-SE: A symbolic execution extension to Java Pathfinder. In Proceedings of the 13th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 134--138.
 
3
Apache Software Foundation. 2003. Bytecode engineering library (BCEL). http://jakarta.apache.org/bcel/. (Accessed Dec. 2007.)
 
4
Artzi, S., Ernst, M. D., Kieżun, A., Pacheco, C., and Perkins, J. H. 2006. Finding the needles in the haystack: Generating legal test inputs for object-oriented programs. In Proceedings of the 1st International Workshop on Model-Based Testing and Object-Oriented Systems (M-TOOS).
 
5
Ball, T. 2003. Abstraction-guided test generation: A case study. Tech. rep. MSR-TR-2003-86, Microsoft Research.
 
6
Beck, K. and Gamma, E. 1998. Test infected: Programmers love writing tests. Java Report 3, 7, 37--50.
 
7
8
9
10
 
11
Centonze, P., Flynn, R. J., and Pistoia, M. 2007. Combining static and dynamic analysis for automatic identification of precise access-control policies. In Proceedings of the 23rd Annual Computer Security Applications Conference (ACSAC). IEEE, 292--303.
 
12
 
13
Cok, D. R. and Kiniry, J. R. 2004. ESC/Java2: Uniting ESC/Java and JML: Progress and issues in building and using ESC/Java2. Tech. rep. NIII-R0413, Nijmegen Institute for Computing and Information Science.
 
14
Coverity Inc. 2003. Coverity Prevent. http://www.coverity.com/. (Accessed Dec. 2007).
 
15
16
17
18
19
 
20
 
21
 
22
 
23
Detlefs, D., Nelson, G., and Saxe, J. B. 2003. Simplify: A theorem prover for program checking. Tech. rep. HPL-2003-148, Hewlett-Packard Systems Research Center.
 
24
 
25
Engler, D. and Musuvathi, M. 2004. Static analysis versus software model checking for bug finding. In Proceedings of the 5th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI). Springer, 191--210.
 
26
Ernst, M. D. 2003. Static and dynamic analysis: Synergy and duality. In Proceedings of the ICSE Workshop on Dynamic Analysis (WODA). 24--27.
 
27
28
29
30
31
32
33
 
34
Hapner, M., Burridge, R., Sharma, R., and Fialli, J. 2002. Java Message Service: Version 1.1. Sun Microsystems, Inc.
 
35
Henkel, J., Reichenbach, C., and Diwan, A. 2007. Discovering documentation for Java container classes. IEEE Trans. Softw. Engin. 33, 8, 526--543.
36
37
38
 
39
Khurshid, S., Pasareanu, C. S., and Visser, W. 2003. Generalized symbolic execution for model checking and testing. In Proceedings of the 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 553--568.
40
41
 
42
 
43
 
44
Kroening, D., Groce, A., and Clarke, E. M. 2004. Counterexample guided abstraction refinement via program execution. In Proceedings of the 6th International Conference on Formal Engineering Methods (ICFEM). Springer, 224--238.
 
45
Leavens, G. T., Baker, A. L., and Ruby, C. 1998. Preliminary design of JML: A behavioral interface specification language for Java. Tech. rep. TR98-06y, Department of Computer Science, Iowa State University.
 
46
Leino, K. R. M., Nelson, G., and Saxe, J. B. 2000. ESC/Java user's manual. Tech. rep. 2000-002, Compaq Computer Corporation Systems Research Center.
 
47
McConnell, S. 2004. Code Complete, 2nd Ed. Microsoft Press.
 
48
 
49
Meyer, B., Ciupa, I., Leitner, A., and Liu, L. 2007. Automatic testing of object-oriented software. In Proceedings of the 33rd Conference on Current Trends in Theory and Practice of Computer Science (SOFSEM). Springer, 114--129.
50
51
 
52
Pacheco, C. and Ernst, M. D. 2005. Eclat: Automatic generation and classification of test inputs. In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP). Springer, 504--527.
 
53
Parasoft Inc. 2002. Jtest. http://www.parasoft.com/. Accessed Dec. 2007.
 
54
 
55
Schlenker, H. and Ringwelski, G. 2002. POOC: A platform for object-oriented constraint programming. In Proceedings of the Joint ERCIM/CologNet International Workshop on Constraint Solving and Constraint Logic Programming. Springer, 159--170.
 
56
Sen, K. and Agha, G. 2006. CUTE and jCUTE: Concolic unit testing and explicit path model-checking tools. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV). Springer, 419--423.
57
 
58
Smaragdakis, Y. and Csallner, C. 2007. Combining static and dynamic reasoning for bug detection. In Proceedings of the 1st International Conference on Tests And Proofs (TAP). Springer, 1--16.
59
60
 
61
Vaziri, M. and Jackson, D. 2003. Checking properties of heap-manipulating procedures with a constraint solver. In Proceedings of the 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS). Springer, 505--520.
 
62
63
 
64
Wagner, S., Jürjens, J., Koller, C., and Trischberger, P. 2005. Comparing bug finding tools with reviews and tests. In Proceedings of the 17th IFIP TC6/WG 6.1 International Conference on Testing of Communicating Systems (TestCom). Springer, 40--55.
65
 
66
Xie, T. and Notkin, D. 2003. Tool-assisted unit test selection based on operational violations. In Proceedings of the 18th IEEE International Conference on Automated Software Engineering (ASE). IEEE, 40--48.
 
67
Xie, Y. and Engler, D. 2003. Using redundancies to find errors. IEEE Trans. Softw. Engin. 29, 10, 915--928.
 
68
Young, M. 2003. Symbiosis of static analysis and program testing. In Proceedings of the 6th International Conference on Fundamental Approaches to Software Engineering (FASE). Springer, 1--5.
69
70


Collaborative Colleagues:
Christoph Csallner: colleagues
Yannis Smaragdakis: colleagues
Tao Xie: colleagues