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

Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging

Published:07 March 2009Publication History

ABSTRACT

Software defects, commonly known as bugs, present a serious challenge for system reliability and dependability. Once a program failure is observed, the debugging activities to locate the defects are typically nontrivial and time consuming. In this paper, we propose a novel automated approach to pin-point the root-causes of software failures.

Our proposed approach consists of three steps. The first step is bug prediction, which leverages the existing work on anomaly-based bug detection as exceptional behavior during program execution has been shown to frequently point to the root cause of a software failure. The second step is bug isolation, which eliminates false-positive bug predictions by checking whether the dynamic forward slices of bug predictions lead to the observed program failure. The last step is bug validation, in which the isolated anomalies are validated by dynamically nullifying their effects and observing if the program still fails. The whole bug prediction, isolation and validation process is fully automated and can be implemented with efficient architectural support. Our experiments with 6 programs and 7 bugs, including a real bug in the gcc 2.95.2 compiler, show that our approach is highly effective at isolating only the relevant anomalies. Compared to state-of-art debugging techniques, our proposed approach pinpoints the defect locations more accurately and presents the user with a much smaller code set to analyze.

References

  1. H. Agrawal and J. Horgan, "Dynamic program slicing", PLDI, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. Barr, "Find the Bug", Addison-Wesley, 2004.Google ScholarGoogle Scholar
  3. G. Chrysos and J. Emer, "Memory dependence prediction using store sets", ISCA-25, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. H. Cleve and A. Zeller, "Locating Causes of Program Failures", ICSE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. J. Crandall and F. Chong, "Minos: Control data attack prevention orthogonal to memory model", MICRO-37, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Dalton, H. Kannan, and C. Kozyrakis, "Raksha: a flexible information flow architecture for software security", ISCA-34, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Dimitrov and H. Zhou, "Unified architectural support for soft-error protection or software-bug detection", PACT-16, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Ernst, J. Cockrell, W. Griswold and D. Notkin, "Dynamically discovering likely program invariants to support program evolution", IEEE TSE, Vol.27, No. 2, Feb 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Ernst, A. Czeisler, W. Griswold and D. Notkin, "Quickly detecting relevant program invariants", ICSE, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. N. Gupta, H. He, X. Zhang, and R. Gupta, "Locating Faulty Code Using Failure-Inducing Chops", ASE, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Hangal and M. Lam, "Tracking down software bugs using automatic anomaly detection", ICSE, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M.J. Harrold, G. Rothermel, K. Sayre, R. Wu and L. Yi, " An empirical investigation of the relationship between spectra differences and regression faults", Journal of Software Testing and Reliability, Vol. 10, No. 3, 2000Google ScholarGoogle Scholar
  13. D. Hower and M. Hill, "Rerun: exploiting episodes for light weight memory race recording", ISCA-35, 2008 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. D. Jeffrey, N. Gupta and R. Gupta, "Identifying the root causes of memory bugs using corrupted memory location suppression", ICSM 2008Google ScholarGoogle Scholar
  15. B. Korel and J. Laski, "Dynamic program slicing", Information Processing Letters (IPL), Vol. 29, No. 3, 1988 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. S. Lu, Z. Li, F. Qin, L. Tan, P. Zhou and Y. Zhou, "Bugbench: Benchmarks for evaluating bug detection tools", Work. on Eval. of SW Defect Detection Tools, June 2005.Google ScholarGoogle Scholar
  17. S. Lu, J. Tucek, F. Qin, and Y. Zhou, "Avio: detecting atomicity violations via access interleaving invariants", ASPLOS, 2006 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. B. Lucia, J. Devetti, K. Strauss, and L. Ceze, "Atom-Aid: Detecting and Surviving Atomicity Violations", ISCA-35, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. Reddi and K. Hazelwood, "Pin: building customized program analysis tools with dynamic instrumentation", PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. G. Misherghi and Z. Su, "Hierarchical delta debugging", ICSE, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. P. Montesinos, L. Ceze, and J. Torrellas, "DeLorean: recording and deterministically replaying shared-memory multiprocessor execution efficiently", ISCA-35, 2008 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. S. Narayanasamy, G. Pokam, and B. Calder, "BugNet: Continuously Recording Program Execution for Deterministic Replay Debugging", ISCA-32, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. M. Prvulovic and J. Torrellas, "ReEnact: using thread-level speculation mechanisms to debug data races in multithreaded codes", ISCA-30, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. P. Racunas, K. Constantinides, S. Manne, and S. Mukherjee, "Perturbation-based fault screening", HPCA-13, 2007 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Renieris and S. Reiss, "Fault localization with nearest neighbor queries", ASE, 2003Google ScholarGoogle ScholarCross RefCross Ref
  26. H. Saal and I. Gat, "A hardware architecture for controlling information flow", ISCA-5, 1978 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro and T. Anderson, "Eraser: a dynamic data race detector for multithreaded programs", ACM TCS, 1997 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. S. Sidiroglou, M. Locasto and A. Keromytis, "Hardware support for self-healing software services", Workshop on Arch. Supp. for Security and Anti-Virus, 2004.Google ScholarGoogle Scholar
  29. D. Sorin, M. Martin, M. Hill and D. Wood, "SafetyNet: improving the availability of shared memory multiprocessors with global checkpoint/recovery", ISCA-29, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. G. E. Suh, J. Lee, D. Zhang, and S. Devadas, "Secure program execution via dynamic information flow tracking", ASPLOS, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. F. Tip, "A survey of program slicing techniques", Journal of Programming Languages, Vol.3, No. 3, 1995.Google ScholarGoogle Scholar
  32. N. Wang and S. Patel, "ReStore: Symptom Based Soft Error Detection in Microprocessors", DSN, 2005.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. Weiser, "Program Slicing", IEEE TSE, Vol. SE-10, No. 4, 1982.Google ScholarGoogle Scholar
  34. Y. Xie and D. Engler., "Using redundancies to find errors", ACM SIGSOFT Symp. on Foundations of Software Engineering (FSE), 2002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. M. Xu, R. Bodik, and M. Hill, "Regulated Transitive Reduction (RTR) for Longer Memory Race Recording", ASPLOS 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Xu, R. Bodik, and M. Hill, "A flight data recorder for enabling full-system multiprocessor deterministic replay", ISCA-30, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. A. Zeller, "Isolating cause-effect chains from computer programs", FSE-10, 2002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Zeller, "Yesterday my program worked. Today, it does not. Why?", FSE-7, 1999 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. A. Zeller, "Why programs fail: a guide to systematic debugging", Morgan Kaufmann, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. A. Zeller and R. Hildebrandt, "Simplifying and isolating failure-inducing input", IEEE TSE, Vol. 28, No. 2, 2002. X. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. X. Zhang, N. Gupta and R. Gupta, "Pruning dynamic slices with confidence", PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. X. Zhang and R. Gupta, "Cost effective dynamic program slicing", PLDI, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. P. Zhou, F. Qin, W. Liu, Y. Zhou, J. Torrellas, "iWatcher: efficient architectural support for software debugging", ISCA-31, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. P. Zhou, W. Liu, L. Fei, S. Lu, F. Qin, Y. Zhou, S.Midkiff and J. Torrellas, "AccMon: Automatically detecting memory-related bugs via program counter-based invariants", MICRO-37, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging

    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

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!