skip to main content
research-article

Dual Execution for On the Fly Fine Grained Execution Comparison

Published:14 March 2015Publication History
Skip Abstract Section

Abstract

Execution comparison has many applications in debugging, malware analysis, software feature identification, and intrusion detection. Existing comparison techniques have various limitations. Some can only compare at the system event level and require executions to take the same input. Some require storing instruction traces that are very space-consuming and have difficulty dealing with non-determinism. In this paper, we propose a novel dual execution technique that allows on-the-fly comparison at the instruction level. Only differences between the executions are recorded. It allows executions to proceed in a coupled mode such that they share the same input sequence with the same timing, reducing nondeterminism. It also allows them to proceed in a decoupled mode such that the user can interact with each one differently. Decoupled executions can be recoupled to share the same future inputs and facilitate further comparison. We have implemented a prototype and applied it to identifying functional components for reuse, comparative debugging with new GDB primitives, and understanding real world regression failures. Our results show that dual execution is a critical enabling technique for execution comparison.

References

  1. David Abramson, Ian Foster, John Michalakes, and Rok Sosic. Relative debugging: A new methodology for debugging scientific applications. Commun. ACM, 39(11):69--77, November 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. G. Antoniol and Y.-G. Gueheneuc. Feature identification: a novel approach and a case study. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Ansuman Banerjee, Abhik Roychoudhury, Johannes A. Harlie, and Zhenkai Liang. Golden implementation driven software debugging. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE '10, pages 177--186, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Emery D. Berger and Benjamin G. Zorn. Diehard: Probabilistic memory safety for unsafe languages. In Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '06, pages 158--168, New York, NY, USA, 2006. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Kenneth P. Birman. Replication and fault-tolerance in the isis system. SIGOPS Oper. Syst. Rev., 19(5):79--86, December 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Dave Black, C. Low, and Santosh K. Shrivastava. The voltan application programming environment for fail-silent processes. Distributed Systems Engineering, 5(2):66--77, 1998.Google ScholarGoogle ScholarCross RefCross Ref
  7. Marcel Böhme and Abhik Roychoudhury. Corebench: studying complexity of regression errors. In ISSTA, pages 105--115, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. David Brumley, Juan Caballero, Zhenkai Liang, James Newsome, and Dawn Song. Towards automatic discovery of deviations in binary implementations with applications to error detection and fingerprint generation. In Proceedings of 16th USENIX Security Symposium on USENIX Security Symposium, SS'07, pages 15:1--15:16, Berkeley, CA, USA, 2007. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Danilo Bruschi, Lorenzo Cavallaro, and Andrea Lanzi. Diversified process replicæ for defeating memory error exploits. Performance, Computing, and Communications Conference, 2002. 21st IEEE International, 0:434--441, 2007.Google ScholarGoogle Scholar
  10. Miguel Castro, Rodrigo Rodrigues, and Barbara Liskov. Base: Using abstraction to improve fault tolerance. ACM Trans. Comput. Syst., 21(3):236--269, August 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Kunrong Chen and Vaclav Rajlich. Ripples: Tool for change in legacy software. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Liming Chen and A Avizienis. N-version programminc: A fault-tolerance approach to rellablllty of software operatlon. In Fault-Tolerant Computing, 1995, Highlights from Twenty-Five Years., Twenty-Fifth International Symposium on, pages 113--, Jun 1995.Google ScholarGoogle Scholar
  13. M. Chereque, D. Powell, P. Reynier, J.-L. Richier, and J. Voiron. Active replication in delta-4. In Fault-Tolerant Computing, 1992. FTCS-22. Digest of Papers., Twenty-Second International Symposium on, pages 28--37, July 1992.Google ScholarGoogle ScholarCross RefCross Ref
  14. Byung-Gon Chun, Petros Maniatis, and Scott Shenker. Diverse replication for single-machine byzantine-fault tolerance. In USENIX 2008 Annual Technical Conference on Annual Technical Conference, ATC'08, pages 287--292, Berkeley, CA, USA, 2008. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Asaf Cidon, Kanthi Nagaraj, Sachin Katti, and Pramod Viswanath. Flashback: Decoupled lightweight wireless control. In Proceedings of the ACM SIGCOMM 2012 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communication, SIGCOMM '12, pages 223--234, New York, NY, USA, 2012. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Benjamin Cox, David Evans, Adrian Filipi, Jonathan Rowanhill, Wei Hu, Jack Davidson, John Knight, Anh Nguyen-Tuong, and Jason Hiser. N-variant systems: A secretless framework for security through diversity. In Proceedings of the 15th Conference on USENIX Security Symposium - Volume 15, USENIX-SS'06, Berkeley, CA, USA, 2006. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Dennis Edwards, Sharon Simmons, and Norman Wilde. An approach to feature location in distributed systems. Journal of Systems and Software, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Thomas Eisenbarth, Rainer Koschke, and Daniel Simon. Locating features in source code. IEEE Transactions on Software Engineering, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. A.D. Eisenberg and K. De Volder. Dynamic feature traces: finding features in unfamiliar code. In Proceedings of the IEEE International Conference on Software Maintenance (ICSM), 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Andrew D. Ferguson, Peter Bodik, Srikanth Kandula, Eric Boutin, and Rodrigo Fonseca. Jockey: Guaranteed job latency in data parallel clusters. In Proceedings of the 7th ACM European Conference on Computer Systems, EuroSys '12, pages 99--112, New York, NY, USA, 2012. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Liang Guo, Abhik Roychoudhury, and Tao Wang. Accurately choosing execution runs for software fault localization. In Proceedings of the 15th International Conference on Compiler Construction, CC'06, pages 80--95, Berlin, Heidelberg, 2006. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Kevin J. Hoffman, Patrick Eugster, and Suresh Jagannathan. Semantics-aware trace analysis. In Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '09, pages 453--464, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Derek R. Hower and Mark D. Hill. Rerun: Exploiting episodes for lightweight memory race recording. In Proceedings of the 35th Annual International Symposium on Computer Architecture, ISCA '08, pages 265--276, Washington, DC, USA, 2008. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Noah M. Johnson, Juan Caballero, Kevin Zhijie Chen, Stephen McCamant, Pongsin Poosankam, Daniel Reynaud, and Dawn Song. Differential slicing: Identifying causal execution differences for security applications. In Proceedings of the 2011 IEEE Symposium on Security and Privacy, SP '11, pages 347--362, Washington, DC, USA, 2011. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Dohyeong Kim, William N. Sumner, Xiangyu Zhang, Dongyan Xu, and Hira Agrawal. Reuse-oriented reverse engineering of functional components from x86 binaries. In Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pages 1128--1139, New York, NY, USA, 2014. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '05, pages 190--200, New York, NY, USA, 2005. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Vitaliy B. Lvin, Gene Novark, Emery D. Berger, and Benjamin G. Zorn. Archipelago: Trading address space for reliability and security. In Proceedings of the 13th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS XIII, pages 115--124, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. J. McDermott, R. Gelinas, and S. Ornstein. Doc, wyatt, and virgil: prototyping storage jamming defenses. In Computer Security Applications Conference, 1997. Proceedings., 13th Annual, pages 265--273, Dec 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Subrata Mitra, Ignacio Laguna, Dong H. Ahn, Saurabh Bagchi, Martin Schulz, and Todd Gamblin. Accurate application progress analysis for large-scale parallel debugging. In PLDI, page 23, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Pablo Montesinos, Matthew Hicks, Samuel T. King, and Josep Torrellas. Capo: A software-hardware interface for practical deterministic multiprocessor replay. In Proceedings of the 14th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS XIV, pages 73--84, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Madanlal Musuvathi, Shaz Qadeer, and Thomas Ball. Chess: A systematic testing tool for concurrent software. Technical Report MSR-TR-2007-149, Microsoft Research, November 2007.Google ScholarGoogle Scholar
  32. Satish Narayanasamy, Cristiano Pereira, and Brad Calder. Recording shared memory dependencies using strata. SIGPLAN Not., 41(11):229--240, October 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Soyeon Park, Yuanyuan Zhou, Weiwei Xiong, Zuoning Yin, Rini Kaushik, Kyu H. Lee, and Shan Lu. Pres: Probabilistic replay with execution sketching on multiprocessors. In Proceedings of the ACM SIGOPS 22Nd Symposium on Operating Systems Principles, SOSP '09, pages 177--192, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Maksym Petrenko and VáClav Rajlich. Concept location using program dependencies and information retrieval (depir). Information and Software Technology, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. D. Poshyvanyk, Y.-G. Gueheneuc, A. Marcus, G. Antoniol, and V. Rajlich. Feature location using probabilistic ranking of methods based on execution scenarios and information retrieval. IEEE Transactions on Software Engineering, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Murali Krishna Ramanathan, Ananth Grama, and Suresh Jagannathan. Sieve: A tool for automatically detecting variations across program versions. 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), 0:241--252, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Manos Renieris and Steven P. Reiss. Fault localization with nearest neighbor queries. In ASE, pages 30--39, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  38. Babak Salamat. Multi-variant Execution: Run-time Defense Against Malicious Code Injection Attacks. PhD thesis, Irvine, CA, USA, 2009. AAI3359500. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Francesco Sorrentino, Azadeh Farzan, and P. Madhusudan. Penelope: Weaving threads to expose atomicity violations. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE '10, pages 37--46, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. William N. Sumner and Xiangyu Zhang. Memory indexing: Canonicalizing addresses across executions. In Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE '10, pages 217--226, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. William N. Sumner and Xiangyu Zhang. Comparative causality: Explaining the differences between executions. In Proceedings of the 2013 International Conference on Software Engineering, ICSE '13, pages 272--281, Piscataway, NJ, USA, 2013. IEEE Press. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. A Tulley and S.K. Shrivastava. Preventing state divergence in replicated distributed programs. In Reliable Distributed Systems, 1990. Proceedings., Ninth Symposium on, pages 104--113, Oct 1990.Google ScholarGoogle ScholarCross RefCross Ref
  43. Ben Vandiver, Hari Balakrishnan, Barbara Liskov, and Samuel Madden. Tolerating Byzantine Faults in Transaction Processing Systems Using Commit Barrier Scheduling. In ACM SOSP, Stevenson, WA, October 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Kaushik Veeraraghavan, Dongyoon Lee, Benjamin Wester, Jessica Ouyang, Peter M. Chen, Jason Flinn, and Satish Narayanasamy. Doubleplay: Parallelizing sequential logging and replay. ACM Trans. Comput. Syst., 30(1):3:1--3:24, February 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Nicolas Viennot, Siddharth Nair, and Jason Nieh. Transparent mutable replay for multicore debugging and patch validation. In Proceedings of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS '13, pages 127--138, New York, NY, USA, 2013. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Jinshui Wang, Xin Peng, Zhenchang Xing, and Wenyun Zhao. Improving feature location practice with multi-faceted interactive exploration. In Proceedings of the 2013 International Conference on Software Engineering (ICSE), 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Dasarath Weeratunge, Xiangyu Zhang, William N. Sumner, and Suresh Jagannathan. Analyzing concurrency bugs using dual slicing. In Proceedings of the 19th International Symposium on Software Testing and Analysis, ISSTA '10, pages 253--264, New York, NY, USA, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Bin Xin, William N. Sumner, and Xiangyu Zhang. Efficient program execution indexing. In Proceedings of the 2008 ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '08, pages 238--248, New York, NY, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Aydan R. Yumerefendi, Benjamin Mickle, and Landon P. Cox. Tightlip: Keeping applications from spilling the beans. In Proceedings of the 4th USENIX Conference on Networked Systems Design & Implementation, NSDI'07, pages 12--12, Berkeley, CA, USA, 2007. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Andreas Zeller. Yesterday, my program worked. today, it does not. why? In Proceedings of the 7th European Software Engineering Conference Held Jointly with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC/FSE-7, pages 253--267, London, UK, UK, 1999. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Dual Execution for On the Fly Fine Grained Execution Comparison

    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

    Full Access

    • Published in

      cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 50, Issue 4
      ASPLOS '15
      April 2015
      676 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/2775054
      • Editor:
      • Andy Gill
      Issue’s Table of Contents
      • cover image ACM Conferences
        ASPLOS '15: Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems
        March 2015
        720 pages
        ISBN:9781450328357
        DOI:10.1145/2694344

      Copyright © 2015 ACM

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 14 March 2015

      Check for updates

      Qualifiers

      • research-article

    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!