skip to main content
10.1145/1081706.1081738acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

Matching execution histories of program versions

Published:01 September 2005Publication History

ABSTRACT

We develop a method for matching dynamic histories of program executions of two program versions. The matches produced can be useful in many applications including software piracy detection and several debugging scenarios. Unlike some static approaches for matching program versions, our approach does not require access to source code of the two program versions because dynamic histories can be collected by running instrumented versions of program binaries. We base our matching algorithm on comparison of rich program execution histories which include: control flow taken, values produced, addresses referenced, as well as data dependences exercised. In developing a matching algorithm we had two goals: producing an accurate match and producing it quickly. By using rich execution history, we are able to compare the program versions across many behavioral dimensions. The result is a fast and highly precise matching algorithm. Our algorithm first uses individual histories of instructions to identify multiple potential matches and then it refines the set of matches by matching the data dependence structure established by the matching instructions. To test our algorithm we attempted matching of execution histories of unoptimized and optimized program versions. Our results show that our algorithm produces highly accurate matches which are highly effective when used in comparison checking approach to debugging optimized code.

References

  1. T. Apiwattanapong, A. Orso, M.J. Harrold, "A Differencing Algorithm for Object-Oriented Programs," IEEE International Conf. on Automated Software Engineering, pages 2--13, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. C. Collberg, C. Thomborson, and D. Low, "Breaking Abstractions and Unstructuring Data Structures," IEEE International Conference on Computer Languages, pages 28--38, Chicago, IL, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. D. Jackson and D.A. Ladd, "Semantic Diff: A Tool for Summarizing the Effects of Modifications," IEEE Conference on Software Maintenance, pages 243--252, Nov. 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Jaramillo, R. Gupta, and M.L. Soffa, "Comparison Checking: An Approach to Avoid Debugging of Optimized Code," 7th European Software Engineering Conference and ACM SIGSOFT 7th Symposium on Foundations of Software Engineering, LNCS 1687, Springer Verlag, pages 268--284, Toulouse, France, September 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Jaramillo, R. Gupta, and M.L. Soffa, "Debugging and Testing Optimizers through Comparison Checking," International Workshop on Compiler Optimization Meets Compiler Verification, Electronic Notes in Theoretical Computer Science 65 No. 2 (2002), held in conjunction with ETAPS, Grenoble, France, April 2002.Google ScholarGoogle Scholar
  6. R. Komondoor and S. Horwitz, "Semantics-Preserving Procedure Extraction," 27th ACM SIGPLAN-SIGACT on Principles of Programming Languages, pages 155--169, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J.R. Larus and E. Schnarr, "EEL: Machine-Independent Executable Editing," SIGPLAN Conference on Programming Language Design and Implementation, pages 291--300, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. Laski and W. Szermer, "Identification of Program Modifications and its Applications to Software Maintenance," IEEE Conference on Software Maintenance, pages 282--290, Nov. 1992.Google ScholarGoogle Scholar
  9. E.W. Myers, "An O(ND) Difference Algorithm and its Variations," Algorithmica, 1(2):251--266, 1986.Google ScholarGoogle ScholarCross RefCross Ref
  10. T. Reps, T. Ball, M. Das, and J. Larus, "The Use of Program Profiling for Software Maintenance with Applications to the Year 2000 Problem," 6th European Software Engineering Conference and ACM SIGSOFT 5th Symposium on Foundations of Software Engineering, pages 432--449, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. Srivastava and A. Eustace, "ATOM - A System for Building Customized Program Analysis Tools," SIGPLAN Conference on Programming Language Design and Implementation, pages 196--205, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Z. Wang, K. Pierce, and S. McFarling, "BMAT - A Binary Matching Tool for Stale Profile Propagation," The Journal of Instruction Level Parallelism, 2, May 2000.Google ScholarGoogle Scholar
  13. C. Wang, J. Davidson, J. hill, and J. Knight, "Protection of Software-based Survivability Mechansims," International Conference of Dependable Systems and Networks, pages 193--202, Goteborg, Sweden, July 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. N. Wilde, "Faster Reuse and Maintenance Using Software Reconnaissance," Technical Report SERC-TR-75F, SERC, Univ. of Florida, CIS Department, Gainesville, FL, July 1994.Google ScholarGoogle Scholar
  15. A. Zeller, "Isolating Cause-Effect Chains from Computer Programs," ACM SIGSOFT 10th International Symposium on the Foundations of Software Engineering, Charleston, South Carolina, November 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. X. Zhang and R. Gupta, "Whole Execution Traces," IEEE/ACM 37th International Symposium on Microarchitecture, Portland, Oregan, December 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. The Trimaran Compiler Research Infrastructure. Nov. 1997.Google ScholarGoogle Scholar
  18. S.S. Muchnick. Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Matching execution histories of program versions

      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
      • Published in

        cover image ACM Conferences
        ESEC/FSE-13: Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
        September 2005
        402 pages
        ISBN:1595930140
        DOI:10.1145/1081706
        • cover image ACM SIGSOFT Software Engineering Notes
          ACM SIGSOFT Software Engineering Notes  Volume 30, Issue 5
          September 2005
          462 pages
          ISSN:0163-5948
          DOI:10.1145/1095430
          Issue’s Table of Contents

        Copyright © 2005 ACM

        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: 1 September 2005

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • Article

        Acceptance Rates

        Overall Acceptance Rate112of543submissions,21%

        Upcoming Conference

        FSE '24

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader