|
ABSTRACT
Dynamic inference techniques have been demonstrated to provide useful support for various software engineering tasks including bug finding, test suite evaluation and improvement, and specification generation. To date, however, dynamic inference has only been used effectively on small programs under controlled conditions. In this paper, we identify reasons why scaling dynamic inference techniques has proven difficult, and introduce solutions that enable a dynamic inference technique to scale to large programs and work effectively with the imperfect traces typically available in industrial scenarios. We describe our approximate inference algorithm, present and evaluate heuristics for winnowing the large number of inferred properties to a manageable set of interesting properties, and report on experiments using inferred properties. We evaluate our techniques on JBoss and the Windows kernel. Our tool is able to infer many of the properties checked by the Static Driver Verifier and leads us to discover a previously unknown bug in Windows.
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
|
Joint CAV/ISSTA Special Event on Specification, Verification, and Testing of Concurrent Software. Jul. 2004.
|
| |
2
|
T. Andrews, S. Qadeer, J. Rehof, S. K. Rajamani, and Y. Xie. Zing: exploiting program structure for model checking concurrent software. International Conference on Concurrency Theory, Aug./Sep. 2004.
|
 |
3
|
Rajeev Alur , Pavol Černý , P. Madhusudan , Wonhong Nam, Synthesis of interface specifications for Java classes, Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.98-109, January 12-14, 2005, Long Beach, California, USA
|
 |
4
|
|
| |
5
|
|
| |
6
|
|
| |
7
|
J. Bowen, P. Breuer, and K. Lano. Formal specifications in software maintenance: from code to Z++ and back again. Information and Software Technology. Nov./Dec. 1993.
|
| |
8
|
P. T. Breuer and K. Lano. Creating specifications from code: reverse-engineering techniques. Journal of Software Maintenance: Research and Practice. Vol 3. 1991.
|
| |
9
|
Sagar Chaki , Edmund Clarke , Alex Groce , Somesh Jha , Helmut Veith, Modular verification of software components in C, Proceedings of the 25th International Conference on Software Engineering, May 03-10, 2003, Portland, Oregon
|
 |
10
|
|
| |
11
|
|
| |
12
|
J. C. Corbett, M. B. Dwyer, J. Hatcliff, and Robby. Expressing checkable properties of dynamic systems: the Bandera specification language. International Journal on Software Tools for Technology Transfer 4(1): 34--56. 2002.
|
 |
13
|
|
 |
14
|
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
|
 |
15
|
Matthew B. Dwyer , George S. Avrunin , James C. Corbett, Patterns in property specifications for finite-state verification, Proceedings of the 21st international conference on Software engineering, p.411-420, May 16-22, 1999, Los Angeles, California, United States
[doi> 10.1145/302405.302672]
|
 |
16
|
Dawson Engler , David Yu Chen , Seth Hallem , Andy Chou , Benjamin Chelf, Bugs as deviant behavior: a general approach to inferring errors in systems code, Proceedings of the eighteenth ACM symposium on Operating systems principles, October 21-24, 2001, Banff, Alberta, Canada
|
| |
17
|
|
 |
18
|
|
| |
19
|
|
 |
20
|
|
| |
21
|
E. Gold. Language identification in the limit. Information and Control, 10, 447--474, 1967.
|
| |
22
|
E. Gold. Complexity of automatic identification from given data. Information and Control, 37, 302--320, 1978.
|
 |
23
|
|
| |
24
|
N. Gupta. Generating test data for dynamically discovering likely program invariants. Workshop on Dynamic Analysis, May 2003.
|
| |
25
|
S. Hagnal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. ICSE, May 2002.
|
| |
26
|
|
| |
27
|
|
 |
28
|
|
| |
29
|
Java Transaction API specification. http://java.sun.com/products/jta/
|
| |
30
|
J2EE. http://java.sun.com/j2ee/index.jsp
|
| |
31
|
JBoss. http://www.jboss.org
|
| |
32
|
JRat. http://jrat.sourceforge.net/
|
| |
33
|
J. R. Larus, T. Ball, M. Das, R. DeLine, M. Fahndrich, J. Pincus, S. K. Rajamani, and R. Venkatapathy. Righting Software. IEEE Software, May/Jun. 2004.
|
 |
34
|
Ben Liblit , Mayur Naik , Alice X. Zheng , Alex Aiken , Michael I. Jordan, Scalable statistical bug isolation, Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, June 12-15, 2005, Chicago, IL, USA
|
 |
35
|
|
 |
36
|
|
 |
37
|
|
| |
38
|
A. Pnueli. The temporal logic of programs. Annual Symposium on Foundations of Computer Science, Oct./Nov. 1977.
|
| |
39
|
B. Pytlik, M. Renieris, S. Krishnamurthi, and S. P. Reiss. Automated fault localization using potential invariants. International Symposium on Automated and Analysis-Driven Debugging. Sep. 2003.
|
| |
40
|
|
 |
41
|
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]
|
| |
42
|
Static Driver Verifier: Finding bugs in device drivers at compile-time. WinHEC, Apr. 2004.
|
| |
43
|
C. Simonyi. Hungarian notation. MSDN library.
|
 |
44
|
|
| |
45
|
A. Edwards, A. Srivastava, and H. Vo. Vulcan: binary transformation in a distributed environment. Research Technical Report, MSR-TR-2001-50, Apr. 2001.
|
| |
46
|
|
| |
47
|
|
| |
48
|
W. Weimer and G. Necula. Mining temporal specifications for error detection. International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Apr. 2005.
|
 |
49
|
|
| |
50
|
|
 |
51
|
|
| |
52
|
|
CITED BY 32
|
|
|
|
|
|
|
|
Ted Kremenek , Paul Twohey , Godmar Back , Andrew Ng , Dawson Engler, From uncertainty to belief: inferring the specification within, Proceedings of the 7th symposium on Operating systems design and implementation, November 06-08, 2006, Seattle, Washington
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Shan Lu , Soyeon Park , Chongfeng Hu , Xiao Ma , Weihang Jiang , Zhenmin Li , Raluca A. Popa , Yuanyuan Zhou, MUVI: automatically inferring multi-variable access correlations and detecting related semantic and concurrency bugs, ACM SIGOPS Operating Systems Review, v.41 n.6, December 2007
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Michael D. Ernst , Jeff H. Perkins , Philip J. Guo , Stephen McCamant , Carlos Pacheco , Matthew S. Tschantz , Chen Xiao, The Daikon system for dynamic detection of likely invariants, Science of Computer Programming, v.69 n.1-3, p.35-45, December, 2007
|
|
|
Dharmesh Thakkar , Ahmed E. Hassan , Gilbert Hamann , Parminder Flora, A framework for measurement based performance modeling, Proceedings of the 7th international workshop on Software and performance, June 23-26, 2008, Princeton, NJ, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|