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

Casper: an efficient approach to call trace collection

Published: 11 January 2016 Publication History

Abstract

Call traces, i.e., sequences of function calls and returns, are fundamental to a wide range of program analyses such as bug reproduction, fault diagnosis, performance analysis, and many others. The conventional approach to collect call traces that instruments each function call and return site incurs large space and time overhead. Our approach aims at reducing the recording overheads by instrumenting only a small amount of call sites while keeping the capability of recovering the full trace. We propose a call trace model and a logged call trace model based on an LL(1) grammar, which enables us to define the criteria of a feasible solution to call trace collection. Based on the two models, we prove that to collect call traces with minimal instrumentation is an NP-hard problem. We then propose an efficient approach to obtaining a suboptimal solution. We implemented our approach as a tool Casper and evaluated it using the DaCapo benchmark suite. The experiment results show that our approach causes significantly lower runtime (and space) overhead than two state-of-the-arts approaches.

References

[1]
A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools (2Nd Edition). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2006.
[2]
G. Ammons, T. Ball, and J. R. Larus. Exploiting Hardware Performance Counters with Flow and Context Sensitive Profiling. In PLDI, 1997.
[3]
G. Ammons, J.-D. Choi, M. Gupta, and N. Swamy. Finding and removing performance bottlenecks in large systems. In ECOOP, 2004.
[4]
T. Ball and J. R. Larus. Optimally Profiling and Tracing Programs. TOPLAS, 1994.
[5]
T. Ball and J. R. Larus. Efficient Path Profiling. In MICRO, 1996.
[6]
S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, et al. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA, 2006.
[7]
M. D. Bond and K. S. McKinley. Probabilistic calling context. In ACM SIGPLAN Notices, 2007.
[8]
M. D. Bond, G. Z. Baker, and S. Z. Guyer. Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses. In PLDI, 2010.
[9]
M. Christodorescu, S. Jha, and C. Kruegel. Mining specifications of malicious behavior. In ESEC/FSE, 2007.
[10]
R. F. Cmelik, S. I. Kong, D. R. Ditzel, and E. J. Kelly. An analysis of MIPS and SPARC instruction set utilization on the SPEC benchmarks. Springer, 1991.
[11]
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, et al. Introduction to algorithms, volume 2. MIT press Cambridge, 2001.
[12]
P. Deutsch. Rfc1951, deflate compressed data format specification, 1996.
[13]
J. A. Fisher, J. R. Ellis, J. C. Ruttenberg, and A. Nicolau. Parallel processing: A smart compiler and a dumb machine. In ACM SIGPLAN Notices, 1984.
[14]
M. Fowler. Refactoring: Improving the design of existing code, 1997.
[15]
M. Gabel and Z. Su. Javert: Fully Automatic Mining of General Temporal Properties from Dynamic Traces. In FSE, 2008.
[16]
J. Ha, M. Arnold, S. M. Blackburn, and K. S. McKinley. A concurrent dynamic analysis framework for multicore hardware. In ACM SIGPLAN Notices, 2009.
[17]
S. Han, Y. Dang, S. Ge, D. Zhang, and T. Xie. Performance debugging in the large via mining millions of stack traces. In ICSE, 2012.
[18]
S. A. Hofmeyr, S. Forrest, and A. Somayaji. Intrusion detection using sequences of system calls. Journal of computer security, 1998.
[19]
D. F. Jerding, J. T. Stasko, and T. Ball. Visualizing interactions in program executions. In ICSE, 1997.
[20]
L. Jiang and Z. Su. Context-aware statistical debugging: From bug predictors to faulty control flow paths. In ASE, 2007.
[21]
W. Jin and A. Orso. BugRedux: Reproducing field failures for in-house debugging. In ICSE, 2012.
[22]
V. Krunic, E. Trumpler, and R. Han. Nodemd: Diagnosing node-level faults in remote wireless sensor systems. In MobiSys, 2007.
[23]
P. Lam, F. Qian, O. Lhotak, and E. Bodden. Soot: a java optimization framework. See http://www. sable. mcgill. ca/soot, 2002.
[24]
J. R. Larus. Abstract execution: A technique for efficiently tracing programs. Software: Practice and Experience, 1990.
[25]
J. R. Larus. Whole program paths. In PLDI, 1999.
[26]
W. Lee and S. J. Stolfo. Data mining approaches for intrusion detection. In Usenix Security, 1998.
[27]
B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. ACM SIGPLAN Notices, 2003.
[28]
B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. In ACM SIGPLAN Notices, 2005.
[29]
H. B. Mann and D. R. Whitney. On a test of whether one of two random variables is stochastically larger than the other. The annals of mathematical statistics, 1947.
[30]
D. Melski and T. Reps. Interprocedural path profiling. In CC, 1999.
[31]
H. Mi, H. Wang, Y. Zhou, M. R.-T. Lyu, and H. Cai. Toward finegrained, unsupervised, scalable performance diagnosis for production cloud computing systems. IEEE Transactions on Parallel & Distributed Systems, 2013.
[32]
B. P. Miller and J.-D. Choi. A mechanism for efficient debugging of parallel programs. ACM, 1988.
[33]
T. Mytkowicz, D. Coughlin, and A. Diwan. Inferred call path profiling. In OOPSLA, 2009.
[34]
A. Nistor and L. Ravindranath. Suncat: Helping developers understand and predict performance problems in smartphone applications. In ISSTA, 2014.
[35]
P. Ohmann and B. Liblit. Lightweight control-flow instrumentation and postmortem analysis in support of debugging. In ASE, 2013.
[36]
A. Pathak, Y. C. Hu, and M. Zhang. Where is the energy spent inside my app?: fine grained energy accounting on smartphones with eprof. In EuroSys, 2012.
[37]
M. Pradel and T. R. Gross. Automatic generation of object usage specifications from large method traces. In ASE ’09, pages 371–382, Washington, DC, USA, 2009. IEEE Computer Society.
[38]
M. Pradel and T. R. Gross. Leveraging test generation and specification mining for automated bug detection without false positives. In ICSE ’12, pages 288–298, Piscataway, NJ, USA, 2012. IEEE Press.
[39]
R. Sekar, M. Bendre, D. Dhurjati, and P. Bollineni. A fast automatonbased method for detecting anomalous program behaviors. In S&P, 2001.
[40]
M. Serrano and X. Zhuang. Building approximate calling context from partial call traces. In CGO, 2009.
[41]
W. N. Sumner, Y. Zheng, D. Weeratunge, and X. Zhang. Precise calling context encoding. TSE, 2012.
[42]
V. V. Vazirani. Approximation Algorithms. Springer-Verlag New York, Inc., New York, NY, USA, 2001. ISBN 3-540-65367-8.
[43]
R. Wu, H. Zhang, S.-C. Cheung, and S. Kim. Crashlocator: locating crashing faults based on crash stacks. In ISSTA, 2014.
[44]
X. Yu, S. Han, D. Zhang, and T. Xie. Comprehending performance from real-world execution traces: A device-driver case. In ASPLOS ’14, 2014.
[45]
C. Yuan, N. Lao, J.-R. Wen, J. Li, Z. Zhang, Y.-M. Wang, and W.-Y. Ma. Automated known problem diagnosis with event traces. In ACM SIGOPS Operating Systems Review, 2006.
[46]
Q. Zeng, J. Rhee, H. Zhang, N. Arora, G. Jiang, and P. Liu. Deltapath: Precise and scalable calling context encoding. In CGO, 2014.
[47]
Q. Zhao, I. Cutcutache, and W.-F. Wong. Pipa: Pipelined profiling and analysis on multicore systems. TACO, 2010.
[48]
X. Zhuang, M. J. Serrano, H. W. Cain, and J.-D. Choi. Accurate, efficient, and adaptive calling context profiling. In PLDI, 2006.

Cited By

View all
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityACM SIGPLAN Notices10.1145/3296979.319237853:4(196-210)Online publication date: 11-Jun-2018
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192378(196-210)Online publication date: 11-Jun-2018
  • (2020)Improving Testing by Mimicking User Behavior2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00053(488-498)Online publication date: Sep-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 51, Issue 1
POPL '16
January 2016
815 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2914770
  • Editor:
  • Andy Gill
Issue’s Table of Contents
  • cover image ACM Conferences
    POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
    January 2016
    815 pages
    ISBN:9781450335492
    DOI:10.1145/2837614
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: 11 January 2016
Published in SIGPLAN Volume 51, Issue 1

Check for updates

Author Tags

  1. Call Trace
  2. Instrumentation
  3. Overhead

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)47
  • Downloads (Last 6 weeks)10
Reflects downloads up to 13 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityACM SIGPLAN Notices10.1145/3296979.319237853:4(196-210)Online publication date: 11-Jun-2018
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192378(196-210)Online publication date: 11-Jun-2018
  • (2020)Improving Testing by Mimicking User Behavior2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00053(488-498)Online publication date: Sep-2020
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityACM SIGPLAN Notices10.1145/3296979.319237853:4(196-210)Online publication date: 11-Jun-2018
  • (2018)Calling-to-reference context translation via constraint-guided CFL-reachabilityProceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3192366.3192378(196-210)Online publication date: 11-Jun-2018
  • (2018)On Accelerating Source Code Analysis at Massive ScaleIEEE Transactions on Software Engineering10.1109/TSE.2018.282884844:7(669-688)Online publication date: 1-Jul-2018
  • (2017)Control-flow recovery from partial failure reportsACM SIGPLAN Notices10.1145/3140587.306236852:6(390-405)Online publication date: 14-Jun-2017
  • (2017)Reproducing concurrency failures from crash stacksProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3106292(705-716)Online publication date: 21-Aug-2017
  • (2017)Control-flow recovery from partial failure reportsProceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3062341.3062368(390-405)Online publication date: 14-Jun-2017
  • (2017)InsDal: A safe and extensible instrumentation tool on Dalvik byte-code for Android applications2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER.2017.7884662(502-506)Online publication date: Feb-2017
  • 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

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media