skip to main content
10.1145/2483760.2483763acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

F3: fault localization for field failures

Published:15 July 2013Publication History

ABSTRACT

Reproducing and debugging field failures--failures that occur on user machines after release--are challenging tasks for developers. To help the first task, in previous work we have proposed BugRedux, a technique for reproducing, in-house, failures observed in the field. Although BugRedux can help developers reproduce field failures, it does not provide any specific support for debugging such failures. To address this limitation, in this paper we present F3, a novel technique that builds on BugRedux and extends it with support for fault localization. Specifically, in F3 we extend our previous technique in two main ways: first, we modify BugRedux so that it generates multiple failing and passing executions "similar" to the observed field failure; second, we add to BugRedux debugging capabilities by combining it with a customized fault-localization technique. The results of our empirical evaluation, performed on a set of real-world programs and field failures, are promising: for all the failures considered, F3 was able to (1) synthesize passing and failing executions and (2) successfully use the synthesized executions to perform fault localization and, ultimately, help debugging.

References

  1. Software-artifact Infrastructure Repository. http://sir.unl.edu/, Apr. 2012.Google ScholarGoogle Scholar
  2. Technical Note TN2123: CrashReporter. http://developer. apple.com/technotes/tn2004/tn2123.html, Apr. 2012.Google ScholarGoogle Scholar
  3. Windows Error Reporting: Getting Started. http://www. microsoft.com/whdc/maintain/StartWER.mspx, 2012.Google ScholarGoogle Scholar
  4. R. Abreu, P. Zoeteweij, and A. J. C. v. Gemund. An Evaluation of Similarity Coefficients for Software Fault Localization. In Proc. of the 12th Pacific Rim International Symposium on Dependable Computing, pages 39–46, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. R. Abreu, P. Zoeteweij, and A. J. C. van Gemund. An Observation-based Model for Fault Localization. In Proc. of the 2008 International Workshop on Dynamic Analysis, pages 64–70, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Directed Test Generation for Effective Fault Localization. In Proc. of the 19th International Symposium on Software Testing and Analysis, pages 49–60, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. Artzi, J. Dolby, F. Tip, and M. Pistoia. Fault Localization for Dynamic Web Applications. IEEE Transactions on Software Engineering, 38(2):314 –335, March-April 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. T. Avgerinos, S. K. Cha, B. L. T. Hao, and D. Brumley. AEG: Automatic Exploit Generation. In Proc. of the 18th Network and Distributed System Security Symposium, Feb. 2011.Google ScholarGoogle Scholar
  9. G. K. Baah, A. Podgurski, and M. J. Harrold. Mitigating the Confounding Effects of Program Dependences for Effective Fault Localization. In Proc. of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering, pages 146–156, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. J. Bailey and P. J. Stuckey. Discovery of Minimal Unsatisfiable Subsets of Constraints Using Hitting Set Dualization. In Proc. of the 7th International Conference on Practical Aspects of Declarative Languages, pages 174–186, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. C. Cadar, D. Dunbar, and D. Engler. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proc. of the 8th USENIX Conference on Operating Systems Design and Implementation, pages 209–224, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. T. M. Chilimbi, B. Liblit, K. Mehra, A. V. Nori, and K. Vaswani. H OLMES : Effective Statistical Debugging via Efficient Path Profiling. In Proc. of the 31st International Conference on Software Engineering, pages 34–44, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Christ, E. Ermis, M. Schäf, and T. Wies. Flow-sensitive Fault Localization. In Proc. of the 14th International Conference on Verification, Model Checking, and Abstract Interpretation, 2013.Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. J. Clause and A. Orso. A Technique for Enabling and Supporting Debugging of Field Failures. In ICSE 2007, pages 261–270, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. J. Clause and A. Orso. P ENUMBRA : Automatically Identifying Failure-Relevant Inputs Using Dynamic Tainting. In Proc. of the 2009 International Symposium on Software Testing and Analysis, pages 249–260, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. H. Cleve and A. Zeller. Locating Causes of Program Failures. In Proc. of the 27th International Conference on Software Engineering, pages 342–351, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Elbaum and M. Diep. Profiling Deployed Software: Assessing Strategies and Testing Opportunities. IEEE Transactions on Software Engineering, 31(4):312–327, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. W. Eric Wong, V. Debroy, and B. Choi. A Family of Code Coverage-based Heuristics for Effective Fault Localization. Journal of System and Software, 83(2):188–208, Feb. 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. E. Ermis, M. Schäf, and T. Wies. Error Invariants. In Proc. of the 18th International Symposium on Formal Methods, pages 187–201, 2012.Google ScholarGoogle Scholar
  20. A. Groce. Error Explanation with Distance Metrics. In Tools and Algorithms for the Construction and Analysis of Systems, pages 108–122, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  21. D. M. Hilbert and D. F. Redmiles. Extracting Usability Information from User Interface Events. ACM Computing Surveys, 32(4):384–421, Dec. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. D. Jeffrey, N. Gupta, and R. Gupta. Fault Localization Using Value Replacement. In Proc. of the 2008 International Symposium on Software Testing and Analysis, pages 167–178, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. W. Jin and A. Orso. BugRedux: Reproducing Field Failures for In-house Debugging. In Proc. of the 34th International Conference on Software Engineering, pages 474–484, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. A. Jones, M. J. Harrold, and J. Stasko. Visualization of Test Information to Assist Fault Localization. In Proc. of the 24th International Conference on Software Engineering, pages 467–477, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Jose and R. Majumdar. Cause Clue Clauses: Error Localization Using Maximum Satisfiability. In Proc. of the 2011 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 437–446, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In Proc. of the 2003 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 141–154, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable Statistical Bug Isolation. In Proc. of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 15–26, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. C. Liu, X. Yan, L. Fei, J. Han, and S. P. Midkiff. SOBER: Statistical Model-based Bug Localization. In Proc. of the 10th European Software Engineering Conference and 13th ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 286–295, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. S. Lu, Z. Li, F. Qin, L. Tan, P. Zhou, and Y. Zhou. BugBench: Benchmarks for Evaluating Bug Detection Tools. In Workshop on the Evaluation of Software Defect Detection Tools, 2005.Google ScholarGoogle Scholar
  30. L. Naish, H. J. Lee, and K. Ramamohanarao. A Model for Spectra-based Software Diagnosis. ACM Transactions on Software Engineering Methodology, 20(3):11:1–11:32, August 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Parnin and A. Orso. Are Automated Debugging Techniques Actually Helping Programmers? In Proc. of the 2011 International Symposium on Software Testing and Analysis, pages 199–209, July 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. Pavlopoulou and M. Young. Residual Test Coverage Monitoring. In Proc. of the 21st International Conference on Software Engineering, pages 277–284, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. J. Röβler, G. Fraser, A. Zeller, and A. Orso. Isolating Failure Causes Through Test Case Generation. In Proc. of the 2012 International Symposium on Software Testing and Analysis, pages 309–319, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. Santelices, J. A. Jones, Y. Yu, and M. J. Harrold. Lightweight Fault-localization Using Multiple Coverage Types. In Proc. of the 31st International Conference on Software Engineering, pages 56–66, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. W. N. Sumner, T. Bao, and X. Zhang. Selecting Peers for Execution Comparison. In Proc. of the 2011 International Symposium on Software Testing and Analysis, pages 309–319, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. S. Yoo, M. Harman, and D. Clark. Fault Localization Prioritization: Comparing Information Theoretic and Coverage Based Approaches. ACM Transactions on Software Engineering Methodology, to appear.Google ScholarGoogle Scholar
  37. C. Zamfir and G. Candea. Execution Synthesis: A Technique for Automated Software Debugging. In Proc. of the 5th European Conference on Computer Systems, pages 321–334, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Zeller. Yesterday, my program worked. Today, it does not. Why? In Proc. of the 7th European Software Engineering Conference Held Jointly With the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 253–267, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. A. Zeller. Isolating Cause-effect Chains From Computer Programs. In Proc. of the 10th ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 1–10, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. A. Zeller and R. Hildebrandt. Simplifying and Isolating Failure-Inducing Input. IEEE Transactions on Software Engineering, 28(2):183–200, Feb. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. X. Zhang, N. Gupta, and R. Gupta. Locating Faults Through Automated Predicate Switching. In Proc. of the 28th International Conference on Software Engineering, pages 272–281, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Z. Zhang, W. K. Chan, T. H. Tse, B. Jiang, and X. Wang. Capturing Propagation of Infected Program States. In The 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, pages 43–52, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. T. Zimmermann, R. Premraj, N. Bettenburg, S. Just, A. Schröter, and C. Weiss. What Makes a Good Bug Report? IEEE Transactions on Software Engineering, 36(5):618–643, Sept. 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. F3: fault localization for field failures

    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
      ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and Analysis
      July 2013
      381 pages
      ISBN:9781450321594
      DOI:10.1145/2483760

      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: 15 July 2013

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate58of213submissions,27%

      Upcoming Conference

      ISSTA '24

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader