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.
- Apache bug. http://issues.apache.org/bugzilla/show bug.cgi?id=25520.Google Scholar
- MySQL bug. http://bugs.mysql.com/bug.php?id=791.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Efficient program execution indexing
Recommendations
Efficient program execution indexing
PLDI '08Execution 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 ...
Memory indexing: canonicalizing addresses across executions
FSE '10: Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineeringFine-grained program execution comparison examines different executions generated by different program versions, different inputs, or by perturbations. It has a wide range of applications in debugging, regression testing, program comprehension, and ...
Data Race Detection for Interrupt-Driven Programs via Bounded Model Checking
SERE-C '13: Proceedings of the 2013 IEEE Seventh International Conference on Software Security and Reliability CompanionIn Cyber-Physical Systems with interrupt mechanism, interrupts may cause unexpected interleaving executions and even wrong execution results. A kind of frequently occurred errors are caused by data race. We present an approach under the framework of ...







Comments