skip to main content
10.1145/1375581.1375611acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Efficient program execution indexing

Published:07 June 2008Publication 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.Google ScholarGoogle Scholar
  2. MySQL bug. http://bugs.mysql.com/bug.php?id=791.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Efficient program execution indexing

      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

      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!