Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2694344.2694394acmconferencesArticle/Chapter ViewAbstractPublication PagesasplosConference Proceedingsconference-collections
research-article

Dual Execution for On the Fly Fine Grained Execution Comparison

Published: 14 March 2015 Publication History

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.
[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.
[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.
[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.
[5]
Kenneth P. Birman. Replication and fault-tolerance in the isis system. SIGOPS Oper. Syst. Rev., 19(5):79--86, December 1985.
[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.
[7]
Marcel Böhme and Abhik Roychoudhury. Corebench: studying complexity of regression errors. In ISSTA, pages 105--115, 2014.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[17]
Dennis Edwards, Sharon Simmons, and Norman Wilde. An approach to feature location in distributed systems. Journal of Systems and Software, 2006.
[18]
Thomas Eisenbarth, Rainer Koschke, and Daniel Simon. Locating features in source code. IEEE Transactions on Software Engineering, 2003.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[32]
Satish Narayanasamy, Cristiano Pereira, and Brad Calder. Recording shared memory dependencies using strata. SIGPLAN Not., 41(11):229--240, October 2006.
[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.
[34]
Maksym Petrenko and VáClav Rajlich. Concept location using program dependencies and information retrieval (depir). Information and Software Technology, 2013.
[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.
[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.
[37]
Manos Renieris and Steven P. Reiss. Fault localization with nearest neighbor queries. In ASE, pages 30--39, 2003.
[38]
Babak Salamat. Multi-variant Execution: Run-time Defense Against Malicious Code Injection Attacks. PhD thesis, Irvine, CA, USA, 2009. AAI3359500.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.

Cited By

View all
  • (2022)Sharing is caringProceedings of the Seventeenth European Conference on Computer Systems10.1145/3492321.3519558(99-116)Online publication date: 28-Mar-2022
  • (2021)dMVXProceedings of the 14th European Workshop on Systems Security10.1145/3447852.3458714(41-47)Online publication date: 26-Apr-2021
  • (2020)Distributed Heterogeneous N-Variant ExecutionDetection of Intrusions and Malware, and Vulnerability Assessment10.1007/978-3-030-52683-2_11(217-237)Online publication date: 7-Jul-2020
  • Show More Cited By

Index Terms

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

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    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
    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]

    Sponsors

    In-Cooperation

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 14 March 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. dynamic analysis
    2. execution comparison

    Qualifiers

    • Research-article

    Funding Sources

    Conference

    ASPLOS '15

    Acceptance Rates

    ASPLOS '15 Paper Acceptance Rate 48 of 287 submissions, 17%;
    Overall Acceptance Rate 535 of 2,713 submissions, 20%

    Upcoming Conference

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)14
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 03 Oct 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)Sharing is caringProceedings of the Seventeenth European Conference on Computer Systems10.1145/3492321.3519558(99-116)Online publication date: 28-Mar-2022
    • (2021)dMVXProceedings of the 14th European Workshop on Systems Security10.1145/3447852.3458714(41-47)Online publication date: 26-Apr-2021
    • (2020)Distributed Heterogeneous N-Variant ExecutionDetection of Intrusions and Malware, and Vulnerability Assessment10.1007/978-3-030-52683-2_11(217-237)Online publication date: 7-Jul-2020
    • (2019)kMVXProceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3297858.3304054(559-572)Online publication date: 4-Apr-2019
    • (2018)Faster variational execution with transparent bytecode transformationProceedings of the ACM on Programming Languages10.1145/32764872:OOPSLA(1-30)Online publication date: 24-Oct-2018
    • (2017)CPR: cross platform binary code reuse via platform independent trace programProceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3092703.3092707(158-169)Online publication date: 10-Jul-2017
    • (2016)LDXACM SIGARCH Computer Architecture News10.1145/2980024.287239544:2(503-515)Online publication date: 25-Mar-2016
    • (2016)LDXACM SIGPLAN Notices10.1145/2954679.287239551:4(503-515)Online publication date: 25-Mar-2016
    • (2016)LDXProceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/2872362.2872395(503-515)Online publication date: 25-Mar-2016
    • (2019)Automatic Analysis of Critical Sections for Efficient Secure Multi-Execution2019 IEEE 19th International Conference on Software Quality, Reliability and Security (QRS)10.1109/QRS.2019.00048(318-325)Online publication date: Jul-2019
    • Show More Cited By

    View Options

    Get Access

    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