skip to main content
10.1145/2451116.2451131acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article

Using likely invariants for automated software fault localization

Published:16 March 2013Publication History

ABSTRACT

We propose an automatic diagnosis technique for isolating the root cause(s) of software failures. We use likely program invariants, automatically generated using correct inputs that are close to the fault-triggering input, to select a set of candidate program locations which are possible root causes. We then trim the set of candidate root causes using software-implemented dynamic backwards slicing, plus two new filtering heuristics: dependence filtering, and filtering via multiple failing inputs that are also close to the failing input. Experimental results on reported software bugs of three large open-source servers show that we are able to narrow down the number of candidate bug locations to between 5 and 17 program expressions, even in programs that are hundreds of thousands of lines long.

References

  1. Website. http://findbugs.sourceforge.net/.Google ScholarGoogle Scholar
  2. Website. http://www.hpenterprisesecurity.com/products/hp-fortifysoftware-security-center/hp-fortify-static-code-analyzer/.Google ScholarGoogle Scholar
  3. Website. http://www.coverity.com/products/coverity-save.html.Google ScholarGoogle Scholar
  4. NIST: National Institute of Standards and Technology. Software errors cost U.S. economy $59.5 billion annually: NIST assesses technical needs of industry to improve software-testing. June 2002.Google ScholarGoogle Scholar
  5. R. Abreu, P. Zoeteweij, and A. J. van Gemund. An evaluation of similarity coefficients for software fault localization. In 12th Pacific Rim International Symposium on Dependable Computing(PRDC), 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. V. Adve, C. Lattner, M. Brukman, A. Shukla, and B. Gaeke. LLVA: A low-level virtual instruction set architecture. In Proc. ACM/IEEE Int'l Symp. on Microarch. (MICRO), page 205,Washington, DC, USA, 2003. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Directed test generation for effective fault localization. In Proceedings of the 19th international symposium on Software testing and analysis, ISSTA '10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Practical fault localization for dynamic web applications. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. L. Bird and C. U. Munoz. Automatic generation of random selfchecking test cases. IBM Systems Journal, 22(3):229--245, 1983.Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Bond. Diagnosing and Tolerating Bugs in Deployed Systems. PhD thesis, University of Texas at Austin, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. R. N. Charette. Why Software Fails. Spectrum, IEEE, 42(9):42--49, September 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. H. Cleve and A. Zeller. Locating causes of program failures. In ICSE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. R. Cytron, J. Ferrante, B. K. Rosen, M. N.Wegman, and F. K. Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Trans. on Prog. Langs. and Systs. (TOPLAS), pages 13(4):451--490, October 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. Dhurjati, S. Kowshik, and V. Adve. SAFECode: Enforcing alias analysis for weakly typed languages. In ACM SIGPLAN Conference on Programming Language Design and Implementation, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. W. Dietz, P. Li, J. Regehr, and V. Adve. Understanding Integer Overflow in C/C++. In International Conference on Software Engineering, June 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. M. Dimitrov and H. Zhou. Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging. In ASPLOS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4, OSDI'00, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. M. D. Ernst, J. Cockrell,W. G. Griswold, and D. Notkin. Dynamically discovering likely program invariants to support program evolution. IEEE Trans. Software Eng., 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. J. E. Forrester and B. P. Miller. An empirical study of the robustness of windows nt applications using random testing. In Proceedings of the 4th conference on USENIX Windows Systems Symposium, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. K. Glerum, K. Kinshumann, S. Greenberg, G. Aul, V. Orgovan, G. Nichols, D. Grant, G. Loihle, and G. C. Hunt. Debugging in the (very) large: ten years of implementation and experience. In SOSP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. P. Godefroid, N. Klarlund, and K. Sen. Dart: directed automated random testing. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI '05, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. P. Godefroid, M. Y. Levin, and D. A. Molnar. Automated whitebox fuzz testing. In Network Distributed Security Symposium (NDSS). Internet Society, 2008.Google ScholarGoogle Scholar
  23. N. Gupta, H. He, X. Zhang, and R. Gupta. Locating faulty code using failure-inducing chops. In ASE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. S. Hangal and M. S. Lam. Tracking down software bugs using automatic anomaly detection. In Proceedings of the International Conference on Software Engineering, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. Jeffrey, N. Gupta, and R. Gupta. Effective and efficient localization of multiple faults using value replacement. In ICSM, 2009.Google ScholarGoogle ScholarCross RefCross Ref
  26. J. Jones, M. Harrold, and J. Stasko. Visualization of test information to assist fault localization. In Proceedings of the 24th international conference on Software engineering, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. J. A. Jones and M. J. Harrold. Empirical evaluation of the tarantula automatic fault-localization technique. In ASE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. M. Jose and R. Majumdar. Cause clue clauses: error localization using maximum satisfiability. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis and transformation. In Proc. Conf. on Code Generation and Optimization, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. In Proc. ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. L. Mariani, F. Pastore, and M. Pezze. Dynamic analysis for diagnosing integration faults. IEEE Transactions on Software Engineering, 37:486--508, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. Mockus, N. Nagappan, and T. T. Dinh-Trong. Test coverage and post-verification defects: A multiple case study. In International Symposium on Empirical Software Engineering and Measurement, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. S. Nagarakatte, J. Zhao, M. M. Martin, and S. Zdancewic. Softbound: highly compatible and complete spatial memory safety for c. SIGPLAN Not., 44(6):245--258, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. N. Nethercote and J. Seward. Valgrind: A program supervision framework. Electronic notes in theoretical computer science, 89(2), 2003.Google ScholarGoogle Scholar
  35. B. Pytlik, M. Renieris, S. Krishnamurthi, and S. P. Reiss. Automated fault localization using potential invariants. In Proceedings of the Workshop on Automated and Algorithmic Debugging, 2003.Google ScholarGoogle Scholar
  36. J. Regehr, Y. Chen, P. Cuoq, E. Eide, C. Ellision, and X. Yang. Testcase reduction for c compiler bugs. In Submission, 2012.Google ScholarGoogle Scholar
  37. S. K. Sahoo, J. Criswell, and V. Adve. An empirical study of reported bugs in server software with implications for automated bug diagnosis. In ICSE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. D. Scott. Making smart investments to reduce unplanned downtime. Tactical Guidelines TG-07-4033, Gartner Group, March 1999.Google ScholarGoogle Scholar
  39. W. N. Sumner and X. Zhang. Automatic failure inducing chain computation through aligned execution comparison. In Technical Report 08-023, Purdue University, 2008.Google ScholarGoogle Scholar
  40. W. N. Sumner and X. Zhang. Algorithms for automatically computing the causal paths of failures. In FASE, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. W. N. Sumner and X. Zhang. Memory indexing: canonicalizing addresses across executions. In FSE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. J. Tucek, S. Lu, C. Huang, S. Xanthos, and Y. Zhou. Triage: diagnosing production run failures at the user's site. In SOSP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. B. Xin, W. N. Sumner, and X. Zhang. Efficient program execution indexing. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. newblock A. Zeller. Isolating cause-effect chains from computer programs. In SIGSOFT '02: FSE, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. A. Zeller and R. Hildebrandt. Simplifying and isolating failureinducing input. IEEE Transactions on Software Engineering, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. X. Zhang, N. Gupta, and R. Gupta. Locating faults through automated predicate switching. In ICSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. X. Zhang, N. Gupta, and R. Gupta. A study of effectiveness of dynamic slicing in locating real faults. Empirical Software Engineering, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. X. Zhang, R. Gupta, and Y. Zhang. Precise dynamic slicing algorithms. In Proceedings of the 25th International Conference on Software Engineering, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Using likely invariants for automated software fault localization

        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
          ASPLOS '13: Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
          March 2013
          574 pages
          ISBN:9781450318709
          DOI:10.1145/2451116
          • cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 48, Issue 4
            ASPLOS '13
            April 2013
            540 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/2499368
            Issue’s Table of Contents
          • cover image ACM SIGARCH Computer Architecture News
            ACM SIGARCH Computer Architecture News  Volume 41, Issue 1
            ASPLOS '13
            March 2013
            540 pages
            ISSN:0163-5964
            DOI:10.1145/2490301
            Issue’s Table of Contents

          Copyright © 2013 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: 16 March 2013

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate535of2,713submissions,20%

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader