Algorithms for Automatically Computing the Causal Paths of Failures

  • William N. Sumner
  • Xiangyu Zhang
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5503)


We have proposed an automated debugging technique that explains a failure by computing its causal path leading from the root cause to the failure. Given a failing execution, the technique first searches for a dynamic patch. Fine-grained execution comparison between the failing run and the patched run is performed to isolate the causal path. The comparison is enabled by precisely aligning the two executions. We herein propose and study two algorithms aiming at efficiency. We also evaluate the effectiveness and cost of our technique on a set of real bugs, including requirement bugs in which no a single or small set of statements can be blamed as the root cause. In such cases, understanding a failure is more important.


debugging automated debugging execution indexing 


  1. 1.
    Sumner, W.N., Zhang, X.: Automatic failure inducing chain computation through aligned execution comparison. Tech. Rep. 08-023, Purdue University (2008),
  2. 2.
    Zeller, A.: Isolating cause-effect chains from computer programs. In: FSE (2002)Google Scholar
  3. 3.
    Cleve, H., Zeller, A.: Locating causes of program failures. In: ICSE (2005)Google Scholar
  4. 4.
    Xin, B., Sumner, W.N., Zhang, X.: Efficient program execution indexing. In: PLDI (2008)Google Scholar
  5. 5.
    Do, H., Elbaum, S., Rothermel, G.: Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. Empirical Software Engineering: An International Journal 10(4)Google Scholar
  6. 6.
    Korel, B., Laski, J.: Dynamic program slicing. Information Processing Letters 29(3) (1988)Google Scholar
  7. 7.
    Zhang, X., Gupta, N., Gupta, R.: Locating faults through automated predicate switching. In: ICSE (2006)Google Scholar
  8. 8.
    Jackson, D., Thomas, M., Millett, L.I.: Software for Dependable Systems:Sufficient Evidence? The National Academies PressGoogle Scholar
  9. 9.
    Zeller, A., Hildebrandt, R.: Simplifying and isolating failure-inducing input. IEEE Transactions on Software Engineering 28(2) (2002)Google Scholar
  10. 10.
    Harrold, M.J., Rothermel, G., Sayre, K., Wu, R., Yi, L.: An empirical investigation of the relationship between spectra differences and regression faults. Software Testing, Verification and Reliability 10(3)Google Scholar
  11. 11.
    Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: ICSE (2002)Google Scholar
  12. 12.
    Renieris, M., Reiss, S.: Fault localization with nearest neighbor queries. In: ASE (2003)Google Scholar
  13. 13.
    Liblit, B., Aiken, A., Zheng, A.X., Jordan, M.I.: Bug isolation via remote program sampling. In: PLDI (2003)Google Scholar
  14. 14.
    Liu, C., Yan, X., Fei, L., Han, J., Midkiff, S.: Sober: statistical model-based bug localization. In: Gilbert, H., Handschuh, H. (eds.) FSE 2005. LNCS, vol. 3557. Springer, Heidelberg (2005)Google Scholar
  15. 15.
    Brun, Y., Ernst, M.D.: Finding latent code errors via machine learning over program executions. In: ICSE (2004)Google Scholar
  16. 16.
    Chesley, O.C., Ren, X., Ryder, B.G., Tip, F.: Crisp–a fault localization tool for java programs. In: ICSE (2007)Google Scholar
  17. 17.
    Wang, T., Roychoudhury, A.: Automated path generation for software fault localization. In: ASE (2005)Google Scholar
  18. 18.
    Gupta, N., He, H., Zhang, X., Gupta, R.: Locating faulty code using failure-inducing chops. In: ASE (2005)Google Scholar
  19. 19.
    Zhang, X., Gupta, N., Gupta, R.: Pruning dynamic slices with confidence. SIGPLAN Not. 41(6) (2006)Google Scholar
  20. 20.
    Chen, T.Y., Cheung, Y.Y.: Dynamic program dicing. In: ICSM (1993)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • William N. Sumner
    • 1
  • Xiangyu Zhang
    • 1
  1. 1.Department of Computer SciencePurdue UniversityUSA

Personalised recommendations