skip to main content
10.1145/1774088.1774538acmconferencesArticle/Chapter ViewAbstractPublication PagessacConference Proceedingsconference-collections
research-article

Dual analysis for proving safety and finding bugs

Published:22 March 2010Publication History

ABSTRACT

Program bugs remain a major challenge for software developers and various tools have been proposed to help with their localization and elimination. Most present-day tools are based either on over-approximating techniques that can prove safety but may report false positives, or on under-approximating techniques that can find real bugs but with possible false negatives. In this paper, we propose a dual static analysis that is based on only over-approximation. Its main novelty is to concurrently derive conditions that lead to either success or failure outcomes and thus we provide a comprehensive solution for both proving safety and finding real program bugs. We have proven the soundness of our approach and have implemented a prototype system that is validated by a set of experiments.

References

  1. T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In SPIN Workshop, pages 103--122, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. A static analyzer for large safety-critical software. In PLDI, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. P. Cousot and R. Cousot. Modular static program analysis. In CC, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In ACM POPL, pages 84--96, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. J. J. Dongarra, P. Luszczek, and A. Petitet. The LINPACK benchmark: Past, present, and future. Concurrency and Computation: Practice and Experience, 15:1--18, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  6. P. Godefroid. Model checking for programming languages using VeriSoft. In ACM POPL, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. P. Godefroid, N. Klarlund, and K. Sen. DART: Directed Automated Random Testing. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B. S. Gulavani, T. A. Henzinger, Y. Kannan, A. V. Nori, and S. K. Rajamani. SYNERGY: A new algorithm for property checking. In ACM FSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Gulwani, S. Srivastava, and R. Venkatesan. Program analysis as constraint solving. In ACM PLDI, pages 281--292, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In ACM POPL, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. K. Ku, T. E. Hart, M. Chechik, and D. Lie. A buffer overflow benchmark for software model checkers. In ASE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. K. Marriott and H. Søndergaard. Bottom-up dataflow analysis of normal logic programs. J. Log. Program., 13(2&3), 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. National Institute of Standards and Technology. Java SciMark benchmark for scientific computing. http://math.nist.gov/scimark2/.Google ScholarGoogle Scholar
  15. C. S. Pasareanu, R. Pelánek, and W. Visser. Concrete model checking with abstract matching and refinement. In CAV, pages 52--66, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. C. Popeea and W. N. Chin. Inferring disjunctive postconditions. In ASIAN CS Conference, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. C. Popeea, D. N. Xu, and W. N. Chin. A practical and precise inference and specializer for array bound checks elimination. In ACM SIGPLAN PEPM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. W. Pugh. The Omega Test: A fast practical integer programming algorithm for dependence analysis. Communications of the ACM, 8:102--114, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. X. Rival. Understanding the origin of alarms in ASTRÉE. In SAS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. S. Sankaranarayanan, F. Ivancic, I. Shlyakhter, and A. Gupta. Static analysis in disjunctive numerical domains. In SAS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. N. Suzuki and K. Ishihata. Implementation of an array bound checker. In ACM POPL, pages 132--143, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Dual analysis for proving safety and finding bugs

                  Recommendations

                  Comments

                  Login options

                  Check if you have access through your login credentials or your institution to get full access on this article.

                  Sign in
                  • Published in

                    cover image ACM Conferences
                    SAC '10: Proceedings of the 2010 ACM Symposium on Applied Computing
                    March 2010
                    2712 pages
                    ISBN:9781605586397
                    DOI:10.1145/1774088

                    Copyright © 2010 ACM

                    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

                    Publisher

                    Association for Computing Machinery

                    New York, NY, United States

                    Publication History

                    • Published: 22 March 2010

                    Permissions

                    Request permissions about this article.

                    Request Permissions

                    Check for updates

                    Qualifiers

                    • research-article

                    Acceptance Rates

                    SAC '10 Paper Acceptance Rate364of1,353submissions,27%Overall Acceptance Rate1,650of6,669submissions,25%

                  PDF Format

                  View or Download as a PDF file.

                  PDF

                  eReader

                  View online with eReader.

                  eReader