skip to main content
10.1007/978-3-540-31980-1_30guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Mining temporal specifications for error detection

Published: 04 April 2005 Publication History

Abstract

Specifications are necessary in order to find software bugs using program verification tools. This paper presents a novel automatic specification mining algorithm that uses information about error handling to learn temporal safety rules. Our algorithm is based on the observation that programs often make mistakes along exceptional control-flow paths, even when they behave correctly on normal execution paths. We show that this focus improves the effectiveness of the miner for discovering specifications beneficial for bug finding.
We present quantitative results comparing our technique to four existing miners. We highlight assumptions made by various miners that are not always born out in practice. Additionally, we apply our algorithm to existing Java programs and analyze its ability to learn specifications that find bugs in those programs. In our experiments, we find filtering candidate specifications to be more important than ranking them. We find 430 bugs in 1 million lines of code. Notably, we find 250 more bugs using per-program specifications learned by our algorithm than with generic specifications that apply to all programs.

References

[1]
R. Alur, P. Cerny, P. Madhusudan, and W. Nam. Synthesis of interface specifications for Java classes. In Principles of Programming Languages, 2005.
[2]
G. Ammons, R. Bodik, and J. R. Larus. Mining specifications. In Principles of Programming Languages, pages 4-16, 2002.
[3]
G. Ammons, D. Mandein, R. Bodik, and J. Larus. Debugging temporal specifications with concept analysis. In Programming Language Design and Implementation, San Diego, California, June 2003.
[4]
T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In SPIN 2001, Workshop on Model Checking of Software, volume 2057 of Lecture Notes in Computer Science, pages 103-122, May 2001.
[5]
M. Das, S. Lerner, and M. Seigle. ESP: path-sensitive program verification in polynomial time. SIGPLAN Notices, 37(5):57-68, 2002.
[6]
R. DeLine and M. Fähndrich. Enforcing high-level protocols in low-level software. In Programming Language Design and Implementation, pages 59-69, 2001.
[7]
D. R. Engler, D. Y. Chen, and A. Chou. Bugs as inconsistent behavior: A general approach to inferring errors in systems code. In Symposium on Operating Systems Principles, pages 57-72, 2001.
[8]
D. Freedman, R. Pisani, and R. Purves. Statistics. W. W. Norton, 1998.
[9]
Hibernate. Object/relational mapping and transparent object persistence for Java and SQL databases. In http://www.hibernate.org/, July 2004.
[10]
B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In Programming Language Design and Implementation, San Diego, California, June 9-11 2003.
[11]
G. C. Necula, S. McPeak, and W.Weimer. CCured: Type-safe retrofitting of legacy code. In Principles of Programming Languages, pages 128-139. ACM, Jan. 2002.
[12]
S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 15(4):391-411, 1997.
[13]
W. Weimer and G. Necula. Finding and preventing run-time error handling mistakes. In Object-Oriented Programming, Systems, Languages, and Applications, Vancouver, British Columbia, Canada, Oct. 2004.
[14]
J. Whaley, M. C. Martin, and M. S. Lam. Automatic extraction of object-oriented component interfaces. In International Symposium of Software Testing and Analysis, 2002.

Cited By

View all

Index Terms

  1. Mining temporal specifications for error detection
    Index terms have been assigned to the content through auto-classification.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    TACAS'05: Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
    April 2005
    585 pages
    ISBN:3540253335

    Publisher

    Springer-Verlag

    Berlin, Heidelberg

    Publication History

    Published: 04 April 2005

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 24 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media