skip to main content
article
Public Access

Control-flow recovery from partial failure reports

Published:14 June 2017Publication History
Skip Editorial Notes Section

Editorial Notes

A corrigendum was issued for this article on January 14, 2019. This can be found under the Source Materials tab.

Skip Abstract Section

Abstract

Debugging is difficult. When software fails in production, debugging is even harder, as failure reports usually provide only an incomplete picture of the failing execution. We present a system that answers control-flow queries posed by developers as formal languages, indicating whether the query expresses control flow that is possible or impossible for a given failure report. We consider three separate approaches that trade off precision, expressiveness for failure constraints, and scalability. We also introduce a new subclass of regular languages, the unreliable trace languages, which are particularly suited to answering control-flow queries in polynomial time. Our system answers queries remarkably efficiently when we encode failure constraints and user queries entirely as unreliable trace languages.

Skip Supplemental Material Section

Supplemental Material

References

  1. C. Allauzen, M. Riley, J. Schalkwyk, W. Skut, and M. Mohri. OpenFst: A general and efficient weighted finite-state transducer library. In CIAA, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R. Alur and P. Madhusudan. Adding nesting structure to words. In Developments in Language Theory, 10th International Conference, DLT 2006, Santa Barbara, CA, USA, volume 4036 of Lecture Notes in Computer Science, pages 1–13. Springer, 2006. ISBN 3-540-35428-X. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R. Alur, A. Bouajjani, and J. Esparza. Model checking procedural programs. Handbook of Model Checking. Springer, 2015.Google ScholarGoogle Scholar
  4. D. M. Berris, A. Veitch, N. Heintze, E. Anderson, and N. Wang. XRay: A function call tracing system. Technical report, Google Inc., 2016.Google ScholarGoogle Scholar
  5. Y. Cao, H. Zhang, and S. Ding. SymCrash: selective recording for reproducing crashes. In ACM/IEEE International Conference on Automated Software Engineering, ASE ’14, Vasteras, Sweden. ACM, 2014. ISBN 978-1-4503-3013-8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. N. Chen and S. Kim. STAR: stack trace based automatic crash reproduction via symbolic execution. IEEE Trans. Software Eng., 41(2):198–220, 2015.Google ScholarGoogle ScholarCross RefCross Ref
  7. J. Clause and A. Orso. A technique for enabling and supporting debugging of field failures. In Proceedings of the 29th international conference on Software Engineering, ICSE ’07, pages 261–270. IEEE Computer Society, 2007. ISBN 0-7695- 2828-7. 10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. O. Crameri, R. Bianchini, and W. Zwaenepoel. Striking a new balance between program instrumentation and debugging time. In Proceedings of the sixth conference on Computer systems, EuroSys ’11. ACM, 2011. ISBN 978-1-4503-0634-8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. V. Dallmeier, C. Lindig, and A. Zeller. Lightweight defect localization for Java. In ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, volume 3586 of Lecture Notes in Computer Science, pages 528–550. Springer, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. ISBN 3-540-27992-X.Google ScholarGoogle Scholar
  11. L. D’Antoni. The symbolic automata library. https:// github.com/lorisdanto/symbolicautomata, 2016.Google ScholarGoogle Scholar
  12. L. D’Antoni and R. Alur. Symbolic visibly pushdown automata. In Computer Aided Verification - 26th International Conference, CAV 2014, Held as Part of the Vienna Summer of Logic, VSL 2014, Vienna, Austria, volume 8559 of Lecture Notes in Computer Science, pages 209–225. Springer, 2014. ISBN 978-3-319-08866-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. H. Do, S. G. Elbaum, and G. Rothermel. Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact. Empirical Software Engineering, 10 (4):405–435, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Y. Feng, X. Wang, I. Dillig, and C. Lin. Explorer: query- and demand-driven exploration of interprocedural control flow properties. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2015, Pittsburgh, PA, USA, pages 520–534. ACM, 2015. ISBN 978-1-4503-3689-5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. H. N. Gabow, S. N. Maheswari, and L. J. Osterweil. On two problems in the generation of program test paths. IEEE Trans. Software Eng., 2(3):227–231, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. R. Gupta, M. L. Soffa, and J. Howard. Hybrid slicing: integrating dynamic information with static analysis. ACM Trans. Softw. Eng. Methodol., 6(4):370–397, 1997. ISSN 1049-331X. 261644. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. W. Jin and A. Orso. BugRedux: reproducing field failures for in-house debugging. In Proceedings of the 2012 International Conference on Software Engineering, ICSE 2012, pages 474– 484. IEEE Press, 2012. ISBN 978-1-4673-1067-3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. B. Kasikci, T. Ball, G. Candea, J. Erickson, and M. Musuvathi. Efficient tracing of cold code via bias-free sampling. In 2014 USENIX Annual Technical Conference, USENIX ATC ’14, Philadelphia, PA, USA, pages 243–254. USENIX Association, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. O. Klíma and L. Polák. Hierarchies of piecewise testable languages. In Developments in Language Theory, 12th International Conference, DLT 2008, Kyoto, Japan, volume 5257 of Lecture Notes in Computer Science, pages 479– 490. Springer, 2008. ISBN 978-3-540-85779-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. J. Ko and B. A. Myers. Extracting and answering why and why not questions about Java program output. ACM Trans. Softw. Eng. Methodol., 20(2), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. D. Kozen. Lower bounds for natural proof systems. In 18th Annual Symposium on Foundations of Computer Science, Providence, Rhode Island, USA, pages 254–266. IEEE, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Lal, J. Lim, M. Polishchuk, and B. Liblit. BTrace: Path optimization for debugging. Technical Report 1535, University of Wisconsin-Madison, Oct. 2005.Google ScholarGoogle Scholar
  23. T. D. LaToza and B. A. Myers. Developers ask reachability questions. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, ICSE 2010, Cape Town, South Africa, pages 185–194. ACM, 2010. ISBN 978-1-60558-719-6. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO’04). IEEE, Mar. 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In PLDI 2003. ACM, 2003. ISBN 1-58113-662-5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. R. Manevich, M. Sridharan, S. Adams, M. Das, and Z. Yang. PSE: Explaining program failures via postmortem static analysis. In Proceedings of the 12th ACM SIGSOFT Twelfth International Symposium on Foundations of Software Engineering, SIGSOFT ’04/FSE-12, pages 63–72, New York, NY, USA, 2004. ACM. ISBN 1-58113-855-5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997. ISBN 1-55860-320-4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. A. Nishimatsu, M. Jihira, S. Kusumoto, and K. Inoue. Callmark slicing: an efficient and economical way of reducing slice. In Proceedings of the 21st international conference on Software engineering, ICSE ’99, pages 422–431, New York, NY, USA, 1999. ACM. ISBN 1-58113-074-0. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. P. Ohmann and B. Liblit. Lightweight control-flow instrumentation and postmortem analysis in support of debugging. In 28th International Conference on Automated Software Engineering (ASE 2013). IEEE and ACM, Nov. 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. P. Ohmann and B. Liblit. CSIclipse: presenting crash analysis data to developers. In Proceedings of the 2015 Workshop on Eclipse Technology eXchange, ETX 2015, Pittsburgh, PA, USA, pages 7–12. ACM, 2015. ISBN 978-1-4503-3904-9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. P. Ohmann, D. B. Brown, B. Liblit, and T. W. Reps. Recovering execution data from incomplete observations. In Proceedings of the 13th International Workshop on Dynamic Analysis, WODA 2015, Pittsburgh, PA, USA, pages 19–24. ACM, 2015. ISBN 978-1-4503-3909-4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. P. Ohmann, D. B. Brown, N. Neelakandan, J. Linderoth, and B. Liblit. Optimizing customized program coverage. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE 2016, Singapore, pages 27–38. ACM, 2016. ISBN 978-1-4503-3845-5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. P. Ohmann, A. Brooks, L. D’Antoni, and B. Liblit. Supporting proofs for control-flow recovery from partial failure reports. Technical Report 1845, University of Wisconsin–Madison, Apr. 2017.Google ScholarGoogle Scholar
  34. A. Orso, D. Liang, M. J. Harrold, and R. Lipton. Gamma system: continuous evolution of software after deployment. In Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis, ISSTA ’02, pages 65–69, New York, NY, USA, 2002. ACM. ISBN 1-58113-562-9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. C. Pavlopoulou and M. Young. Residual test coverage monitoring. In Proceedings of the 1999 International Conference on Software Engineering, ICSE’ 99, Los Angeles, CA, USA, pages 277–284. ACM, 1999. ISBN 1-58113-074-0. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. J.-E. Pin. Syntactic semigroups. In Handbook of formal languages, pages 679–746. Springer, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. T. Place, L. van Rooijen, and M. Zeitoun. Separating regular languages by piecewise testable and unambiguous languages. In Mathematical Foundations of Computer Science - 38th International Symposium, MFCS 2013, Klosterneuburg, Austria, volume 8087 of Lecture Notes in Computer Science, pages 729– 740. Springer, 2013. ISBN 978-3-642-40312-5.Google ScholarGoogle Scholar
  38. J. Rößler, A. Zeller, G. Fraser, C. Zamfir, and G. Candea. Reconstructing core dumps. In ICST ’13: Proceedings of the Sixth IEEE International Conference on Software Testing, Verification and Validation. IEEE, Mar. 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. G. Rothermel, S. Elbaum, A. Kinneer, and H. Do. Software– artifact infrastructure repository, Sept. 2006.Google ScholarGoogle Scholar
  40. A. Rountev, S. Kagan, and M. Gibas. Static and dynamic analysis of call chains in Java. In Proceedings of the ACM/SIGSOFT International Symposium on Software Testing and Analysis, ISSTA 2004, pages 1–11. ACM, 2004. ISBN 1-58113-820-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. I. Simon. Piecewise testable events. In Automata Theory and Formal Languages, 2nd GI Conference, Kaiserslautern, volume 33 of Lecture Notes in Computer Science, pages 214–222. Springer, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. ISBN 3-540-07407-4.Google ScholarGoogle Scholar
  43. M. M. Tikir and J. K. Hollingsworth. Efficient online computation of statement coverage. Journal of Systems and Software, 78(2):146–165, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. M. Veanes. Applications of symbolic finite automata. In Implementation and Application of Automata - 18th International Conference, CIAA 2013, Halifax, NS, Canada, volume 7982 of Lecture Notes in Computer Science, pages 16–23. Springer, 2013. ISBN 978-3-642-39273-3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. M. Veanes, P. de Halleux, and N. Tillmann. Rex: Symbolic regular expression explorer. In 3rd International Conference on Software Testing, Verification and Validation, ICST 2010, Paris, France, pages 498–507. IEEE, 2010. ISBN 978-0-7695-3990-4. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. R. Wu, X. Xiao, S. Cheung, H. Zhang, and C. Zhang. Casper: an efficient approach to call trace collection. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016, pages 678–690. ACM, 2016. ISBN 978-1-4503-3549-2. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. C. Zamfir and G. Candea. Execution synthesis: a technique for automated software debugging. In Proceedings of the 5th European conference on Computer systems, EuroSys ’10, pages 321–334. ACM, 2010. ISBN 978-1-60558-577-2. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Control-flow recovery from partial failure reports

          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

          • Published in

            cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 52, Issue 6
            PLDI '17
            June 2017
            708 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/3140587
            Issue’s Table of Contents
            • cover image ACM Conferences
              PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
              June 2017
              708 pages
              ISBN:9781450349888
              DOI:10.1145/3062341

            Copyright © 2017 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 14 June 2017

            Check for updates

            Qualifiers

            • article

          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!