Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Public Access

Control-flow recovery from partial failure reports

Published: 14 June 2017 Publication History

Editorial Notes

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

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.

Supplementary Material

PDF File (pldi17-main189-corrigendum.pdf)
Corrigendum to "Control-flow recovery from partial failure reports", by Ohmann et al., PLDI '17 Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
Auxiliary Archive (pldi17-main189-s.zip)
The archive contains three articles of supplemental material: (1) a virtual machine artifact for reproducing the experimental results from the paper, (2) a report of supplemental proofs for the techniques and language classes introduced in the conference paper, and (3) the result data used to generate all plots in the paper.

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.
[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.
[3]
R. Alur, A. Bouajjani, and J. Esparza. Model checking procedural programs. Handbook of Model Checking. Springer, 2015.
[4]
D. M. Berris, A. Veitch, N. Heintze, E. Anderson, and N. Wang. XRay: A function call tracing system. Technical report, Google Inc., 2016.
[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.
[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.
[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.
[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.
[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.
[10]
ISBN 3-540-27992-X.
[11]
L. D’Antoni. The symbolic automata library. https:// github.com/lorisdanto/symbolicautomata, 2016.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[22]
A. Lal, J. Lim, M. Polishchuk, and B. Liblit. BTrace: Path optimization for debugging. Technical Report 1535, University of Wisconsin-Madison, Oct. 2005.
[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.
[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.
[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.
[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.
[27]
S. S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997. ISBN 1-55860-320-4.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[36]
J.-E. Pin. Syntactic semigroups. In Handbook of formal languages, pages 679–746. Springer, 1997.
[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.
[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.
[39]
G. Rothermel, S. Elbaum, A. Kinneer, and H. Do. Software– artifact infrastructure repository, Sept. 2006.
[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.
[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.
[42]
ISBN 3-540-07407-4.
[43]
M. M. Tikir and J. K. Hollingsworth. Efficient online computation of statement coverage. Journal of Systems and Software, 78(2):146–165, 2005.
[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.
[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.
[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.
[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.

Cited By

View all
  • (2020)Differentially-private software frequency profiling under linear constraintsProceedings of the ACM on Programming Languages10.1145/34282714:OOPSLA(1-24)Online publication date: 13-Nov-2020
  • (2023)Adonis: Practical and Efficient Control Flow Recovery through OS-level TracesACM Transactions on Software Engineering and Methodology10.1145/360718733:1(1-27)Online publication date: 4-Jul-2023
  • (2021)JPortal: precise and efficient control-flow tracing for JVM programs with Intel processor traceProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454096(1080-1094)Online publication date: 19-Jun-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

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
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 June 2017
Published in SIGPLAN Volume 52, Issue 6

Check for updates

Author Tags

  1. Deployed software
  2. failure reporting

Qualifiers

  • Article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)104
  • Downloads (Last 6 weeks)28
Reflects downloads up to 07 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Differentially-private software frequency profiling under linear constraintsProceedings of the ACM on Programming Languages10.1145/34282714:OOPSLA(1-24)Online publication date: 13-Nov-2020
  • (2023)Adonis: Practical and Efficient Control Flow Recovery through OS-level TracesACM Transactions on Software Engineering and Methodology10.1145/360718733:1(1-27)Online publication date: 4-Jul-2023
  • (2021)JPortal: precise and efficient control-flow tracing for JVM programs with Intel processor traceProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454096(1080-1094)Online publication date: 19-Jun-2021
  • (2021)The application of hypergroups in symbolic executions and finite automataSoft Computing10.1007/s00500-021-05812-325:11(7247-7256)Online publication date: 22-Apr-2021
  • (2019)DEEPVSAProceedings of the 28th USENIX Conference on Security Symposium10.5555/3361338.3361462(1787-1804)Online publication date: 14-Aug-2019
  • (2017)The Power of Symbolic Automata and TransducersComputer Aided Verification10.1007/978-3-319-63387-9_3(47-67)Online publication date: 13-Jul-2017

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media