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.
- H. Agrawal and J. Horgan, "Dynamic program slicing", PLDI, 1990. Google Scholar
Digital Library
- A. Barr, "Find the Bug", Addison-Wesley, 2004.Google Scholar
- G. Chrysos and J. Emer, "Memory dependence prediction using store sets", ISCA-25, 1998. Google Scholar
Digital Library
- H. Cleve and A. Zeller, "Locating Causes of Program Failures", ICSE, 2005. Google Scholar
Digital Library
- J. Crandall and F. Chong, "Minos: Control data attack prevention orthogonal to memory model", MICRO-37, 2004. Google Scholar
Digital Library
- M. Dalton, H. Kannan, and C. Kozyrakis, "Raksha: a flexible information flow architecture for software security", ISCA-34, 2007. Google Scholar
Digital Library
- M. Dimitrov and H. Zhou, "Unified architectural support for soft-error protection or software-bug detection", PACT-16, 2007. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- M. Ernst, A. Czeisler, W. Griswold and D. Notkin, "Quickly detecting relevant program invariants", ICSE, 2000. Google Scholar
Digital Library
- N. Gupta, H. He, X. Zhang, and R. Gupta, "Locating Faulty Code Using Failure-Inducing Chops", ASE, 2005. Google Scholar
Digital Library
- S. Hangal and M. Lam, "Tracking down software bugs using automatic anomaly detection", ICSE, 2002. Google Scholar
Digital Library
- 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 Scholar
- D. Hower and M. Hill, "Rerun: exploiting episodes for light weight memory race recording", ISCA-35, 2008 Google Scholar
Digital Library
- D. Jeffrey, N. Gupta and R. Gupta, "Identifying the root causes of memory bugs using corrupted memory location suppression", ICSM 2008Google Scholar
- B. Korel and J. Laski, "Dynamic program slicing", Information Processing Letters (IPL), Vol. 29, No. 3, 1988 Google Scholar
Digital Library
- 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 Scholar
- S. Lu, J. Tucek, F. Qin, and Y. Zhou, "Avio: detecting atomicity violations via access interleaving invariants", ASPLOS, 2006 Google Scholar
Digital Library
- B. Lucia, J. Devetti, K. Strauss, and L. Ceze, "Atom-Aid: Detecting and Surviving Atomicity Violations", ISCA-35, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- G. Misherghi and Z. Su, "Hierarchical delta debugging", ICSE, 2006. Google Scholar
Digital Library
- P. Montesinos, L. Ceze, and J. Torrellas, "DeLorean: recording and deterministically replaying shared-memory multiprocessor execution efficiently", ISCA-35, 2008 Google Scholar
Digital Library
- S. Narayanasamy, G. Pokam, and B. Calder, "BugNet: Continuously Recording Program Execution for Deterministic Replay Debugging", ISCA-32, 2005. Google Scholar
Digital Library
- M. Prvulovic and J. Torrellas, "ReEnact: using thread-level speculation mechanisms to debug data races in multithreaded codes", ISCA-30, 2003. Google Scholar
Digital Library
- P. Racunas, K. Constantinides, S. Manne, and S. Mukherjee, "Perturbation-based fault screening", HPCA-13, 2007 Google Scholar
Digital Library
- M. Renieris and S. Reiss, "Fault localization with nearest neighbor queries", ASE, 2003Google Scholar
Cross Ref
- H. Saal and I. Gat, "A hardware architecture for controlling information flow", ISCA-5, 1978 Google Scholar
Digital Library
- S. Savage, M. Burrows, G. Nelson, P. Sobalvarro and T. Anderson, "Eraser: a dynamic data race detector for multithreaded programs", ACM TCS, 1997 Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- G. E. Suh, J. Lee, D. Zhang, and S. Devadas, "Secure program execution via dynamic information flow tracking", ASPLOS, 2004. Google Scholar
Digital Library
- F. Tip, "A survey of program slicing techniques", Journal of Programming Languages, Vol.3, No. 3, 1995.Google Scholar
- N. Wang and S. Patel, "ReStore: Symptom Based Soft Error Detection in Microprocessors", DSN, 2005.Google Scholar
Digital Library
- M. Weiser, "Program Slicing", IEEE TSE, Vol. SE-10, No. 4, 1982.Google Scholar
- Y. Xie and D. Engler., "Using redundancies to find errors", ACM SIGSOFT Symp. on Foundations of Software Engineering (FSE), 2002 Google Scholar
Digital Library
- M. Xu, R. Bodik, and M. Hill, "Regulated Transitive Reduction (RTR) for Longer Memory Race Recording", ASPLOS 2006. Google Scholar
Digital Library
- M. Xu, R. Bodik, and M. Hill, "A flight data recorder for enabling full-system multiprocessor deterministic replay", ISCA-30, 2003. Google Scholar
Digital Library
- A. Zeller, "Isolating cause-effect chains from computer programs", FSE-10, 2002 Google Scholar
Digital Library
- A. Zeller, "Yesterday my program worked. Today, it does not. Why?", FSE-7, 1999 Google Scholar
Digital Library
- A. Zeller, "Why programs fail: a guide to systematic debugging", Morgan Kaufmann, 2005. Google Scholar
Digital Library
- A. Zeller and R. Hildebrandt, "Simplifying and isolating failure-inducing input", IEEE TSE, Vol. 28, No. 2, 2002. X. Google Scholar
Digital Library
- X. Zhang, N. Gupta and R. Gupta, "Pruning dynamic slices with confidence", PLDI, 2006. Google Scholar
Digital Library
- X. Zhang and R. Gupta, "Cost effective dynamic program slicing", PLDI, 2004. Google Scholar
Digital Library
- P. Zhou, F. Qin, W. Liu, Y. Zhou, J. Torrellas, "iWatcher: efficient architectural support for software debugging", ISCA-31, 2004. Google Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging
Recommendations
Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging
ASPLOS 2009Software 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,...
Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging
ASPLOS 2009Software 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,...
Effective Bug Triage Based on Historical Bug-Fix Information
ISSRE '14: Proceedings of the 2014 IEEE 25th International Symposium on Software Reliability EngineeringFor complex and popular software, project teams could receive a large number of bug reports. It is often tedious and costly to manually assign these bug reports to developers who have the expertise to fix the bugs. Many bug triage techniques have been ...








Comments