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.
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Kenneth P. Birman. Replication and fault-tolerance in the isis system. SIGOPS Oper. Syst. Rev., 19(5):79--86, December 1985. Google Scholar
Digital Library
- 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 Scholar
Cross Ref
- Marcel Böhme and Abhik Roychoudhury. Corebench: studying complexity of regression errors. In ISSTA, pages 105--115, 2014. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Dennis Edwards, Sharon Simmons, and Norman Wilde. An approach to feature location in distributed systems. Journal of Systems and Software, 2006. Google Scholar
Digital Library
- Thomas Eisenbarth, Rainer Koschke, and Daniel Simon. Locating features in source code. IEEE Transactions on Software Engineering, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- Satish Narayanasamy, Cristiano Pereira, and Brad Calder. Recording shared memory dependencies using strata. SIGPLAN Not., 41(11):229--240, October 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Maksym Petrenko and VáClav Rajlich. Concept location using program dependencies and information retrieval (depir). Information and Software Technology, 2013. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Manos Renieris and Steven P. Reiss. Fault localization with nearest neighbor queries. In ASE, pages 30--39, 2003.Google Scholar
Cross Ref
- Babak Salamat. Multi-variant Execution: Run-time Defense Against Malicious Code Injection Attacks. PhD thesis, Irvine, CA, USA, 2009. AAI3359500. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Dual Execution for On the Fly Fine Grained Execution Comparison
Recommendations
Dual Execution for On the Fly Fine Grained Execution Comparison
ASPLOS '15: Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating SystemsExecution 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 ...
Dual Execution for On the Fly Fine Grained Execution Comparison
ASPLOS'15Execution 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 ...
A semantics for execution levels with exceptions
FOAL '11: Proceedings of the 10th international workshop on Foundations of aspect-oriented languagesAspect-oriented languages are usually formulated as an extension to existing languages, without paying any special attention to the underlying exception handling mechanisms. Consequently, aspect exceptions and handlers are no different than base ...







Comments