Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1181775.1181786acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

Dynamic slicing long running programs through execution fast forwarding

Published: 05 November 2006 Publication History

Abstract

Fixing runtime bugs in long running programs using trace based analyses such as dynamic slicing was believed to be prohibitively expensive. In this paper, we present a novel execution fast forwarding technique that makes this feasible. While a naive solution is to divide the entire execution by checkpoints, and then apply dynamic slicing enabled by tracing to one checkpoint interval at a time, it is still too costly even with state-of-the-art tracing techniques. Our technique is derived from two key observations. The first one is that long running programs are usually driven by events, which has been taken advantage of by checkpointing/replaying techniques to deterministically replay an execution from the event log. The second observation is that all the events are not relevant to replaying a particular part of the execution, in which the programmer suspects an error happened. We develop a slicing-like technique that can be used to prune irrelevant events from the event log. Driven by the reduced log, the replayed execution is now traced for fault location. This replayed execution has the effect of fast forwarding, i.e the amount of executed instructions is significantly reduced without losing the accuracy of reproducing a failure. Our evaluation shows that skipping irrelevant events can reduce the space requirement for dynamic slicing by factors ranging from 72 to 44490. We also describe how checkpointing and tracing enabled dynamic slicing are combined, which we believe is the first attempt to integrate these two techniques. Finally, the dynamic slices of a set of reported bugs for long running programs are studied to show the effectiveness of dynamic slicing.

References

[1]
S. Bhansali, W-K. Chen, S. de Jong, A. Edwards, R. Murray, M. Drinic, D. Mihocka, and J. Chau, "Framework for instruction-level tracing and analysis of program executions," Virtual Execution Environments Conference, Ottawa, Canada, June 2006.
[2]
J. Choi and A. Zeller, "Isolating Failure-Inducing Thread Schedules", Proceedings of the International Symposium on Software Testing and Analysis, Rome, Italy, July 2002.
[3]
N. Gupta, H. He, X. Zhang, and R Gupta, "Locating Faulty Code Using Failure-Inducing Chops," 20th IEEE/ACM International Conference on Automated Software Engineering, pages 263--272, Long Beach, California, Nov. 2005.
[4]
T. Gyimothy, A. Beszedes, I. Forgacs, "An efficient relevant slicing method for debugging," 7th European Software Engineering Conference 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, Toulouse, France, 1999.
[5]
B. Korel and J. Laski, "Dynamic program slicing," Information Processing Letters, Vol. 29, No. 3, pages 155--163, 1988.
[6]
B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan, "Bug Isolation via Remote Program Sampling," SIGPLAN Conference on Programming Language Design and Implementation, San Diego, California, June 2003.
[7]
S. Lu, Z. Li, F. Qin, L. Tan, P. Zhou, and Y. Zhou, "BugBench: a benchmark for evaluating bug detection tools", Workshop on the Evaluation of Software Defect Detection Tools, 2005.
[8]
R.H.B. Netzer and M.H. Weaver, "Optimal Tracing and Incremental Reexecution for Debugging Long-Running Programs", ACM SIGPLAN Conference on Programming Language Design and Implementation, Orlando, FL, USA, pages 313--325, June 1994.
[9]
A. Orso, and B. Kennedy, "Selective capture and replay of program executions", In Proceedings of the Third international Workshop on Dynamic Analysis, St. Louis, Missouri, May 17-17, 2005.
[10]
A. Orso, S. Joshi, M. Burger, and A. Zeller, "Locating Causes of Program Failures", Proceedings of the 2006 International Workshop on Dynamic Analysis, Shanghai, China, May 2006.
[11]
D.Z. Pan and M.A. Linton, "Supporting reverse execution of parallel programs," ACM workshop on parallel and distributed debugging, Madison, WI, USA, May 1988.
[12]
F. Qin, J. Tucek, J. Sundaresan, and Y. Zhou, "Rx: treating bugs as allergies - a safe method to survive software failures", the 20th ACM Symposium on Operating Systems Principles Brighton, UK, pages 235--248, Oct. 2005.
[13]
M.C. Rinard, C. Cadar, D. Dumitran, D.M. Roy, T. Leu, and W.S. Beebee, "Enhancing Server Availability and Security Through Failure-Oblivious Computing", the Sixth Symposium on Operating System Design and Implementation San Francisco, California, pages 303--316, 2004.
[14]
M. Ronsse, K. De Bosschere, M. Christiaens, J.C. de Kergommeaux, and D. Kranzlmller, "Record/replay for nondeterministic program executions", Communication of the ACM 46(9), pages 62--67, 2003.
[15]
M. Ronsse, K. De Bosschere, and J.C. de Kergommeaux, "Execution replay and debugging", Fourth Workshop on Automated and Analysis-Driven Debugging, Munich, Germany, August 2000.
[16]
D. Saff, S. Artzi, J.H. Perkins, and M.D. Ernst "Automatic test factoring for java", In Proceedings of the 20th IEEE/ACM international Conference on Automated Software Engineering, Long Beach, CA, USA, November 07-11, 2005.
[17]
Y. Saito, "Jockey: a user-space library for record-replay debugging", Sixth International Symposium on Automated and Analysis-Driven Debugging, Monterey, California, September 2005.
[18]
J. Seward et al. "Valgrind: A GPL'd system for debugging and profiling x86-linux programs", http://valgrind.ked.org/, 2004.
[19]
S.M. Srinivasan, S. Kandula, C.R. Andrews, and Y. Zhou, "Flashback: a lightweight extension for rollback and deterministic replay for software debugging", USENIX Annual Technical Conference, Boston, MA, USA, June 1994.
[20]
L.D. Wittie. "Debugging distributed C programs by real time replay," ACM workshop on parallel and distributed debugging, pages 57--67, Madison, WI, USA, May 1988.
[21]
A. Zeller and R. Hildebrandt, "Simplifying and Isolating Failure-Inducing Input", IEEE Transactions on Software Engineering 28(2), February 2002, pp. 183--200.
[22]
X. Zhang and R. Gupta, "Whole Execution Traces," IEEE/ACM 37th International Symposium on Microarchitecture, pages 105--116, 2004.
[23]
X. Zhang, N. Gupta and R. Gupta, "A Study of Effectiveness of Dynamic Slicing in Locating Real Faults," Empirical Software Engineering Journal, August 2006.
[24]
X. Zhang, N. Gupta, and R. Gupta "Locating Faults Through Automated Predicate Switching," IEEE/ACM International Conference on Software Engineering, Shanghai, China, May 2006.
[25]
X. Zhang, N. Gupta, and R. Gupta "Pruning Dynamic Slices With Confidence," ACM SIGPLAN Conference on Programming Language Design and Implementation, Ottawa, Canada, June 2006.
[26]
GNU bc. http://www.gnu.org/software/bc
[27]
Mutt Website. www.mutt.org
[28]
Mutt Buffer Overflow. http://www.securiteam.com/unixfocus/5FP0T0U9FU.html
[29]
Midnight Commander. www.ibiblio.org/mc
[30]
Midnight Commander exploit. www.securityfocus.com/bid/8658
[31]
Pine Website. www.washington.edu/pine/
[32]
Pine Stack Buffer Overflow Error. http://www.xatrix.org/advisory.php?s=7408
[33]
Pine Heap Buffer Overflow Error. http://www.securityfocus.com/bid/6120
[34]
Squid Website. http://www.squid-cache.org/
[35]
Squid Buffer Overflow. http://www.securiteam.com/unixfocus/5BP0P2A6AY.html

Cited By

View all
  • (2023)Performance Bug Analysis and Detection for Distributed Storage and Computing SystemsACM Transactions on Storage10.1145/358028119:3(1-33)Online publication date: 19-Jun-2023
  • (2023)A Control-Theoretic Approach to Auto-Tuning Dynamic Analysis for Distributed Services2023 IEEE/ACM 45th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)10.1109/ICSE-Companion58688.2023.00092(330-331)Online publication date: May-2023
  • (2020)Efficient testing of GUI applications by event sequence reductionScience of Computer Programming10.1016/j.scico.2020.102522(102522)Online publication date: Aug-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SIGSOFT '06/FSE-14: Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
November 2006
298 pages
ISBN:1595934685
DOI:10.1145/1181775
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 05 November 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. checkpointing
  2. data slicing
  3. debugging
  4. event logging
  5. replay

Qualifiers

  • Article

Conference

SIGSOFT06/FSE-14
Sponsor:

Acceptance Rates

Overall Acceptance Rate 17 of 128 submissions, 13%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Performance Bug Analysis and Detection for Distributed Storage and Computing SystemsACM Transactions on Storage10.1145/358028119:3(1-33)Online publication date: 19-Jun-2023
  • (2023)A Control-Theoretic Approach to Auto-Tuning Dynamic Analysis for Distributed Services2023 IEEE/ACM 45th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)10.1109/ICSE-Companion58688.2023.00092(330-331)Online publication date: May-2023
  • (2020)Efficient testing of GUI applications by event sequence reductionScience of Computer Programming10.1016/j.scico.2020.102522(102522)Online publication date: Aug-2020
  • (2019)Understanding Ineffective Events and Reducing Test Sequences for Android Applications2019 International Symposium on Theoretical Aspects of Software Engineering (TASE)10.1109/TASE.2019.00012(264-272)Online publication date: Jul-2019
  • (2019)Dynamic slicing for AndroidProceedings of the 41st International Conference on Software Engineering10.1109/ICSE.2019.00118(1154-1164)Online publication date: 25-May-2019
  • (2018)PcatchProceedings of the Thirteenth EuroSys Conference10.1145/3190508.3190552(1-14)Online publication date: 23-Apr-2018
  • (2017)Characterizing and taming non-deterministic bugs in JavaScript applicationsProceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering10.5555/3155562.3155696(1006-1009)Online publication date: 30-Oct-2017
  • (2017)Dynamic Dependence SummariesACM Transactions on Software Engineering and Methodology10.1145/296844425:4(1-41)Online publication date: 9-Jan-2017
  • (2017)Characterizing and taming non-deterministic bugs in Javascript applications2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE.2017.8115720(1006-1009)Online publication date: Oct-2017
  • (2016)Modernizing hierarchical delta debuggingProceedings of the 7th International Workshop on Automating Test Case Design, Selection, and Evaluation10.1145/2994291.2994296(31-37)Online publication date: 18-Nov-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media