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.
- http://www.cse.unl.edu/~galileo/sir.Google Scholar
- http://www.elis.ugent.be/diablo/.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Bogdan Korel and JLaski. Dynamic program slicing. Information Processing Letters, 29(3):155--163, 1988. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Seward and N. Nethercote. Valgrind, an open-source memory debugger for x86-gnu/linux. In http://valgrind.kde.org/.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Towards locating execution omission errors
Recommendations
Towards locating execution omission errors
PLDI '07: Proceedings of the 28th ACM SIGPLAN Conference on Programming Language Design and ImplementationExecution 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 ...
Fast shadow execution for debugging numerical errors using error free transformations
This paper proposes, EFTSanitizer, a fast shadow execution framework for detecting and debugging numerical errors during late stages of testing especially for long-running applications. Any shadow execution framework needs an oracle to compare against ...
Countably piecewise monotonic surjection implicit dependence copulas
AbstractThe copula of two uniform-( 0 , 1 ) random variables U and V is called implicit dependence if there exist measure-preserving transformations α and β on [ 0 , 1 ] such that α ( U ) = β ( V ) almost surely. Relationships between the ...







Comments