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

Efficient program execution indexing

Published: 07 June 2008 Publication History

Abstract

Execution indexing uniquely identifies a point in an execution. Desirable execution indices reveal correlations between points in an execution and establish correspondence between points across multiple executions. Therefore, execution indexing is essential for a wide variety of dynamic program analyses, for example, it can be used to organize program profiles; it can precisely identify the point in a re-execution that corresponds to a given point in an original execution and thus facilitate debugging or dynamic instrumentation. In this paper, we formally define the concept of execution index and propose an indexing scheme based on execution structure and program state. We present a highly optimized online implementation of the technique. We also perform a client study, which targets producing a failure inducing schedule for a data race by verifying the two alternative happens-before orderings of a racing pair. Indexing is used to precisely locate corresponding points across multiple executions in the presence of non-determinism so that no heavyweight tracing/replay system is needed.

References

[1]
Apache bug. http://issues.apache.org/bugzilla/show bug.cgi?id=25520.
[2]
MySQL bug. http://bugs.mysql.com/bug.php?id=791.
[3]
C. Allan, P. Avgustinov, A. S. Christensen, L. Hendren, S. Kuzins, O. Lhoták, O. de Moor, D. Sereni, G. Sittampalam, and J. Tibble. Adding trace matching with free variables to AspectJ. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, pages 345--364, San Diego, CA, USA, 2005. ACM Press.
[4]
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. In Proceedings of the 2nd International Conference on Virtual Execution Environments, pages 154--163, Ottawa, Canada, June 2006. ACM.
[5]
M. Burtscher and M. Jeeradit. Compressing extended program traces using value predictors. In Proceedings of the 12th International Conference on Parallel Architectures and Compilation Techniques, pages 159--169, New Orleans, Louisiana, 2003.
[6]
T. M. Chilimbi. Efficient representations and abstractions for quantifying and exploiting data reference locality. In Proceedings of the 2001 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 191--202, Snowbird, UT, June 2001. ACM.
[7]
J. Dean, J. E. Hicks, C. A.Waldspurger, W. E.Weihl, and G. Chrysos. ProfileMe: hardware support for instruction-level profiling on out-of order processors. In Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture, pages 292--302, Research Triangle Park, NC, 1997.
[8]
J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319--349, 1987.
[9]
L. Guo, A. Roychoudhury, and T. Wang. Accurately choosing execution runs for software fault localization. In 15th International Conference on Compiler Construction, pages 80--95, Vienna, Austria, 2006.
[10]
J. J. Harrow. Runtime checking of multithreaded applications with visual threads. In Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification, pages 331--342, London, UK, 2000. Springer-Verlag.
[11]
J. R. Larus. Whole program paths. In Proceedings of the 1999 ACM SIGPLAN Conference on Programming language Design and Implementation, pages 259--269, Atlanta, Georgia, May 1999. ACM.
[12]
S. Lu, J. Tucek, F. Qin, and Y. Zhou. AVIO: detecting atomicity violations via access interleaving invariants. In Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, pages 37--48, San Jose, CA, 2006.
[13]
M. C. Martin, V. B. Livshits, and M. S. Lam. Finding application errors and security flaws using PQL: a program query language. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 365--383, San Diego, CA, 2005.
[14]
W. Masri, A. Podgurski, and D. Leon. Detecting and debugging insecure information flows. In Proceedings of the 15th International Symposium on Software Reliability Engineering (ISSRE?04), pages 198--209, Saint-Malo, Bretagne, France, 2004.
[15]
S. Narayanasamy, Z. Wang, J. Tigani, A. Edwards, and B. Calder. Automatically classifying benign and harmful data races using replay analysis. In Proceedings of the ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation, pages 22--31, San Diego, CA, June 2007.
[16]
S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: a dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 15(4):391--411, 1997.
[17]
L. Van Put, D. Chanet, B. De Bus, B. De Sutter, and K. De Bosschere. DIABLO: a reliable, retargetable and extensible link-time rewriting framework. In Proceedings of the 2005 IEEE International Symposium On Signal Processing And Information Technology, pages 7--12, Athens, Greece, December 2005. IEEE.
[18]
R. J. Walker and K. Viggers. Implementing protocols via declarative event patterns. In Proceedings of the 12th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 159--169, Newport Beach, CA, 2004.
[19]
T. Wang and A. Roychoudhury. Using compressed bytecode traces for slicing Java programs. In Proceedings of the 26th International Conference on Software Engineering, pages 512--521, Edinburgh, United Kingdom, May 2004.
[20]
B. Xin and X. Zhang. Efficient online detection of dynamic control dependence. In Proceedings of the ACM/SIGSOFT International Symposium on Software Testing and Analysis, pages 185--195, London, UK, July 2007. ACM.
[21]
M. Xu, R. Bodík, and M. D. Hill. A serializability violation detector for shared-memory server programs. In Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, pages 1--14, Chicago, IL, 2005. ACM.
[22]
A. Zeller. Isolating cause-effect chains from computer programs. In Proceedings of the 10th ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 1--10, Charleston, SC, November 2002. ACM.
[23]
X. Zhang, S. Tallam, N. Gupta, and R. Gupta. Towards locating execution omission errors. In Proceedings of the ACM SIGPLAN 2007 Conference on Programming Language Design and Implementation, pages 415--424, San Diego, California, USA, June 2007. ACM.
[24]
Y. Zhang and R. Gupta. Timestamped whole program path representation and its applications. In Proceedings of the 2001 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 180--190, Snowbird, UT, June 2001. ACM.

Cited By

View all
  • (2023)Responsibility in Context: On Applicability of Slicing in Semantic Regression AnalysisProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00057(563-575)Online publication date: 14-May-2023
  • (2023)Slicing‐Based Techniques for Software Fault LocalizationHandbook of Software Fault Localization10.1002/9781119880929.ch3(135-200)Online publication date: 21-Apr-2023
  • (2023)Software Fault Localization: an Overview of Research, Techniques, and ToolsHandbook of Software Fault Localization10.1002/9781119880929.ch1(1-117)Online publication date: 21-Apr-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 43, Issue 6
PLDI '08
June 2008
382 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1379022
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '08: Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation
    June 2008
    396 pages
    ISBN:9781595938602
    DOI:10.1145/1375581
    • General Chair:
    • Rajiv Gupta,
    • Program Chair:
    • Saman Amarasinghe
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: 07 June 2008
Published in SIGPLAN Volume 43, Issue 6

Check for updates

Author Tags

  1. control dependence
  2. data race
  3. execution alignment
  4. execution indexing
  5. semantic augmentation
  6. structural indexing

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (2023)Responsibility in Context: On Applicability of Slicing in Semantic Regression AnalysisProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00057(563-575)Online publication date: 14-May-2023
  • (2023)Slicing‐Based Techniques for Software Fault LocalizationHandbook of Software Fault Localization10.1002/9781119880929.ch3(135-200)Online publication date: 21-Apr-2023
  • (2023)Software Fault Localization: an Overview of Research, Techniques, and ToolsHandbook of Software Fault Localization10.1002/9781119880929.ch1(1-117)Online publication date: 21-Apr-2023
  • (2022)FlakeRepro: automated and efficient reproduction of concurrency-related flaky testsProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558956(1509-1520)Online publication date: 7-Nov-2022
  • (2022)IRQDebloat: Reducing Driver Attack Surface in Embedded Devices2022 IEEE Symposium on Security and Privacy (SP)10.1109/SP46214.2022.9833695(1608-1622)Online publication date: May-2022
  • (2021)Service-Level Fault Injection TestingProceedings of the ACM Symposium on Cloud Computing10.1145/3472883.3487005(388-402)Online publication date: 1-Nov-2021
  • (2020)Using mutants to help developers distinguish and debug (compiler) faultsSoftware Testing, Verification and Reliability10.1002/stvr.172730:2Online publication date: 13-Jan-2020
  • (2019)Precise reasoning with structured time, structured heaps, and collective operationsProceedings of the ACM on Programming Languages10.1145/33605833:OOPSLA(1-30)Online publication date: 10-Oct-2019
  • (2017)Precise Heap Differentiating Using Access Path and Execution IndexSoftware Engineering and Methodology for Emerging Domains10.1007/978-981-10-3482-4_10(133-148)Online publication date: 17-Jan-2017
  • (2024)The Havoc Paradox in Generator-Based Fuzzing (Registered Report)Proceedings of the 3rd ACM International Fuzzing Workshop10.1145/3678722.3685529(3-12)Online publication date: 13-Sep-2024
  • 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