Skip to main content

What Gives? A Hybrid Algorithm for Error Trace Explanation

  • Conference paper
  • First Online:
Verified Software: Theories, Tools and Experiments (VSTTE 2014)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8471))

Abstract

When a program fails, the cause of the failure is often buried in a long, hard-to-understand error trace. We present a new technique for automatic error localization, which formally unifies prior approaches based on computing interpolants and minimal unsatisfiable cores of failing executions. Our technique works by automatically reducing an error trace to its essential components—a minimal set of statements that are responsible for the error, together with key predicates that explain how these statements lead to the failure. We prove that our approach is sound, and we show that it is useful for debugging real programs.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 1.

    We could have also produced another IIL corresponding to the other MUC, removing the statement z=1 in that case.

References

  1. Agrawal, H., Horgan, J.R.: Dynamic program slicing. In: PLDI ’90, pp. 246–256 (1990)

    Google Scholar 

  2. Bailey, J., Stuckey, P.J.: Discovery of minimal unsatisfiable subsets of constraints using hitting set dualization. In: Hermenegildo, M.V., Cabeza, D. (eds.) PADL 2004. LNCS, vol. 3350, pp. 174–186. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  3. Ball, T., Naik, M., Rajamani, S.K.: From symptom to cause: localizing errors in counterexample traces. In: POPL ’03, pp. 97–105 (2003)

    Google Scholar 

  4. Belov, A., Marques-Silva, J.: MUSer2: An efficient MUS extractor. JSAT 8, 123–128 (2012)

    Google Scholar 

  5. Beyer, D., Henzinger, T.A., Jhala, R., Majumdar, R.: The software model checker BLAST: Applications to software engineering. Int. J. Softw. Tools Technol. Transf. 9(5), 505–525 (2007)

    Article  Google Scholar 

  6. Chandra, S., Torlak, E., Barman, S., Bodik, R.: Angelic debugging. In: ICSE (2011)

    Google Scholar 

  7. Cleve, H., Zeller, A.: Locating causes of program failures. In: ICSE, pp. 342–351 (2005)

    Google Scholar 

  8. Craig, W.: Three uses of Herbrand-Gentzen theorem in relating model theory and proof theory. J. Symb. Comput. 22, 250–268 (1957)

    MathSciNet  MATH  Google Scholar 

  9. Dijkstra, E.W.: A Discipline of Programming, 1st edn. Prentice Hall PTR, Upper Saddle River, NJ, USA (1997)

    Google Scholar 

  10. Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: PLDI (2012)

    Google Scholar 

  11. D’Silva, V., Kroening, D., Purandare, M., Weissenbacher, G.: Interpolant strength. In: Barthe, G., Hermenegildo, M. (eds.) VMCAI 2010. LNCS, vol. 5944, pp. 129–145. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  12. Ermis, E., Schäf, M., Wies, T.: Error invariants. In: Giannakopoulou, D., Méry, D. (eds.) FM 2012. LNCS, vol. 7436, pp. 187–201. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  13. Groce, A., Chaki, S., Kroening, D., Strichman, O.: Error explanation with distance metrics. Softw. Tools Technol. Transf. (STTT) 8, 229–247 (2006)

    Article  Google Scholar 

  14. Hangal, S., Lam, M.S.: Tracking down software bugs using automatic anomaly detection. In: ICSE ’02 (2002)

    Google Scholar 

  15. Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. In: POPL (2004)

    Google Scholar 

  16. Jaffar, J., Michaylov, S., Stuckey, P.J., Yap, R.H.C.: The CLP(\(\cal {R}\)) language and system. ACM Trans. Program. Lang. Syst. 14(3), 339–395 (1992)

    Article  Google Scholar 

  17. Jaffar, J., Murali, V., Navas, J.A., Santosa, A.E.: TRACER: A Symbolic execution tool for verification. In: Madhusudan, P., Seshia, S.A. (eds.) CAV 2012. LNCS, vol. 7358, pp. 758–766. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  18. Jhala, R., McMillan, K.L.: A practical and complete approach to predicate refinement. In: Hermanns, H., Palsberg, J. (eds.) TACAS 2006. LNCS, vol. 3920, pp. 459–473. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  19. Jones, J.A., Harrold, M.J., Stasko, J.: Visualization of test information to assist fault localization. In: ICSE ’02, pp. 467–477 (2002)

    Google Scholar 

  20. Jose, M., Majumdar, R.: Cause clue clauses: Error localization using maximum satisfiability. SIGPLAN Not. 46(6), 437–446 (2011)

    Article  Google Scholar 

  21. Liffiton, M.H., Sakallah, K.A.: Algorithms for computing minimal unsatisfiable subsets of constraints. J. Autom. Reason. 40(1), 1–33 (2008)

    Article  MathSciNet  MATH  Google Scholar 

  22. Logozzo, F., Ball, T.: Modular and verified automatic program repair. In: OOPSLA (2012)

    Google Scholar 

  23. McCarthy, J.: A basis for a mathematical theory of computation. In: Braffort, P., Hirshberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland, Amsterdam (1963)

    Chapter  Google Scholar 

  24. McMillan, K.L.: Interpolation and SAT-Based model checking. In: Hunt Jr., W.A., Somenzi, F. (eds.) CAV 2003. LNCS, vol. 2725, pp. 1–13. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  25. McMillan, K.L.: Applications of Craig interpolants in model checking. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 1–12. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  26. Nadel, A.: Boosting minimal unsatisfiable core extraction. In: FMCAD (2010)

    Google Scholar 

  27. Necula, G.C., McPeak, S., Rahul, S.P., Weimer, W.: CIL: Intermediate language and tools for analysis and transformation of C programs. In: Nigel Horspool, R. (ed.) CC 2002. LNCS, vol. 2304, pp. 213–228. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  28. Qi, D., Roychoudhury, A., Liang, Z., Vaswani, K.: Darwin: An approach to debugging evolving programs. ACM Trans. Softw. Eng. Methodol. 21(3), 19 (2012)

    Article  Google Scholar 

  29. Rollini, S.F., Sery, O., Sharygina, N.: Leveraging interpolant strength in model checking. In: Madhusudan, P., Seshia, S.A. (eds.) CAV 2012. LNCS, vol. 7358, pp. 193–209. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  30. Sahoo, S.K., Criswell, J., Geigle, C., Adve, V.: Using likely invariants for automated software fault localization. In: ASPLOS (2013)

    Google Scholar 

  31. Schäf, M., Schwartz-Narbonne, D., Wies, T.: Explaining inconsistent code. In: ESEC/SIGSOFT FSE, pp. 521–531 (2013)

    Google Scholar 

  32. Silva, J.P.M.: Minimal unsatisfiability: Models, algorithms and applications (invited paper). In: ISMVL (2010)

    Google Scholar 

  33. Software-artifact infrastructure repository (SIR), August 2010. http://sir.unl.edu/portal/index.html

  34. Vizel, Y., Grumberg, O.: Interpolation-sequence based model checking. In: FMCAD (2009)

    Google Scholar 

  35. Zeller, A.: Isolating cause-effect chains from computer programs. In: FSE ’02, pp. 1–10 (2002)

    Google Scholar 

  36. Zhang, X., Gupta, N., Gupta, R.: A study of effectiveness of dynamic slicing in locating real faults. Empir. Softw. Engg. 12(2), 143–160 (2007)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nishant Sinha .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer International Publishing Switzerland

About this paper

Cite this paper

Murali, V., Sinha, N., Torlak, E., Chandra, S. (2014). What Gives? A Hybrid Algorithm for Error Trace Explanation. In: Giannakopoulou, D., Kroening, D. (eds) Verified Software: Theories, Tools and Experiments. VSTTE 2014. Lecture Notes in Computer Science(), vol 8471. Springer, Cham. https://doi.org/10.1007/978-3-319-12154-3_17

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-12154-3_17

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-12153-6

  • Online ISBN: 978-3-319-12154-3

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics