skip to main content
article

Towards locating execution omission errors

Published:10 June 2007Publication History
Skip Abstract Section

Abstract

Execution omission errors are known to be difficult to locate using dynamic analysis. These errors lead to a failure at runtime because of the omission of execution of some statements that would have been executed if the program had no errors. Since dynamic analysis is typically designed to focus on dynamic information arising from executed statements, and statements whose execution is omitted do not produce dynamic information, detection of execution omission errors becomes a challenging task. For example, while dynamic slices are very effective in capturing faulty code for other types of errors, they fail to capture faulty code in presence of execution omission errors. To address this issue relevant slices have been defined to consider certain static dependences (called potential dependences) in addition to dynamic dependences. However, due to the conservative nature of static analysis, overly large slices are produced. In this paper, we propose a fully dynamic solution to locating execution omission errors using dynamic slices. We introduce the notion of implicit dependences which are dependences that are normally invisible to dynamic slicing due to the omission of execution of some statements. We design a dynamic method that forces the execution of the omitted code by switching outcomes of relevant predicates such that those implicit dependences are exposed and become available for dynamic slicing. Dynamic slices can be computed and effectively pruned to produce fault candidate sets containing the execution omission errors. We solve two main problems: verifying the existence of a single implicit dependence through predicate switching, and recovering the implicit dependences in a demand driven manner such that a small number of verifications are required before the root cause is captured. Our experiments show that the proposed technique is highly effective in capturing execution omission errors.

References

  1. http://www.cse.unl.edu/~galileo/sir.Google ScholarGoogle Scholar
  2. http://www.elis.ugent.be/diablo/.Google ScholarGoogle Scholar
  3. Tibor Gyimothy, Arpad Beszedes, and Istan Forgacs. An efficient relevant slicing method for debugging. In ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 303--321, Toulouse, France, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Sudheendra Hangal and Monica S. Lam. Tracking down software bugs using automatic anomaly detection. In ICSE '02: Proceedings of the International Conference on Software Engineering, pages 291--301, Orlando, Florida, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Mary Jean Harrold, Gregg Rothermel, Rui Wu, and Liu Yi. An empirical investigation of program spectra. In PASTE '98: Proceedings of the 1998 ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pages 83--90, Montreal, Quebec, Canada, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Matthias Hauswirth and Trishul M. Chilimbi. Low-overhead memory leak detection using adaptive statistical profiling. In ASPLOS-XI: Proceedings of the 11th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 156--164, Boston, MA, USA, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. James A. Jones, Mary Jean Harrold, and John Stasko. Visualization of test information to assist fault localization. In ICSE '02: Proceedings of the International Conference on Software Engineering, pages 467--477, Orlando, Florida, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Bogdan Korel and JLaski. Dynamic program slicing. Information Processing Letters, 29(3):155--163, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Ben Liblit, Alex Aiken, Alice X. Zheng, and Michael I. Jordan. Bug isolation via remote program sampling. In PLDI '03: Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation, pages 141--154, San Diego, California, USA, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chao Liu, Xifeng Yan, Long Fei, Jiawei Han, and Samuel P. Midkiff. Sober: statistical model-based bug localization. In ESEC/FSE-13: Proceedings of the 10th European Software Engineering Conference held jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 286--295, Lisbon, Portugal, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Manos Renieris and Steven Reiss. Fault localization with nearest neighbor queries. In ASE '03: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, pages 30--39, Montreal, Canada, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  12. G. Rothermel and M. Harrold. Empirical studies of a safe regression test selection technique. IEEE Transaction on Software Engineering, 24(6):401--419, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Joseph R. Ruthruff, Margaret Burnett, and Gregg Rothermel. An empirical study of fault localization for end-user programmers. In ICSE '05: Proceedings of the International Conference on Software Engineering, pages 352--361, St. Louis, MO, USA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. J. Seward and N. Nethercote. Valgrind, an open-source memory debugger for x86-gnu/linux. In http://valgrind.kde.org/.Google ScholarGoogle Scholar
  15. Tao Wang and Abhik Roychoudhury. Using compressed bytecode traces for slicing java programs. In ICSE'04:Proceedings of the International Conference on Software Engineering, pages 512--521, Edinburgh, United Kingdom, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Tao Wang and Abhik Roychoudhury. Automated path generation for software fault localization. In ASE '05: Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering, pages 347--351, Long Beach, CA, USA, 2005. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Andreas Zeller. Isolating cause-effect chains from computer programs. In SIGSOFT '02/FSE-10: Proceedings of the 10th ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 1--10, Charleston, South Carolina, USA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Xiangyu Zhang, Neelam Gupta, and Rajiv Gupta. Locating faults through automated predicate switching. In ICSE '06: Proceeding of the International Conference on Software Engineering, pages 272--281, Shanghai, China, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Xiangyu Zhang, Neelam Gupta, and Rajiv Gupta. Pruning dynamic slices with confidence. In PLDI '06: Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation, pages 169--180, Chicago,IL, USA, 2006. ACM Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Xiangyu Zhang, Haifeng He, Neelam Gupta, and Rajiv Gupta. Experimental evaluation of using dynamic slices for fault location. In AADEBUG'05: Proceedings of the International Symposium on Automated Analysis-driven Debugging, pages 33--42, Monterey, California, USA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Towards locating execution omission errors

      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

      Full Access

      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!