Abstract
Data structure corruptions are insidious bugs that reduce the reliability of software systems. Constraint-based datastructure repair promises to help programs recover from potentially crippling corruption errors. Prior work repairs a variety of relatively small data structures, usually with hundreds of nodes.
We present STARC which uses static analysis to repair data structures with tens of thousands of nodes. Given a Java predicate method that describes the integrity constraints of a structure, STARC statically analyzes the method to identify: (1) the recurrent fields, i.e., fields that the predicate method uses to traverse the structure; and (2) local field constraints, i.e., how the value of an object field is related to the value of a neighboring object field. STARC executes the predicate method on the structure and monitors its execution to identify corrupt object fields, which STARC then repairs using a systematic search of a neighborhood of the given structure. Each repair action is guided by the result of the static analysis, which enables more efficient and effective repair compared to prior work. Experimental results showthat STARC can repair structures with tens of thousands of nodes, up to 100 times larger than prior work.
STARC efficiency is probably not practical for very large data structures in deployed systems, but opens a promising direction for future work.
- William Adjie-Winoto, Elliot Schwartz, Hari Balakrishnan, and Jeremy Lilley. The design and implementation of an intentional naming system. In Proc. 17th ACM Symposium on Operating Systems Principles (SOSP), Kiawah Island, December 1999. Google Scholar
Digital Library
- C. Artho, H. Barringer, A. Goldberg, K. Havelund, S. Khurshid, M. Lowry, C. Pasareanu, G. Rosu, K. Sen, W. Visser, and R. Washington. Combining test case generation and runtime verification. Theoretical Computer Science, 2005. Google Scholar
Digital Library
- Clark Barrett and Sergey Berezin. CVC Lite: A new implementation of the cooperating validity checker. In Proceedings of the 16th International Conference On Computer Aided Verification, Boston, MA, July 2004.Google Scholar
Cross Ref
- Douglas Barry. Web Services and Service-Oriented Architectures: The Savvy Manager's Guide., chapter Service Oriented Architecture. Morgan Kaufmann Publishers, 2003. Google Scholar
Digital Library
- Chandrasekhar Boyapati, Sarfraz Khurshid, and Darko Marinov. Korat: Automated testing based on Java predicates. In Proc. International Symposium on Software Testing and Analysis (ISSTA), July 2002. Google Scholar
Digital Library
- B. Cahoon and K. McKinley. Recurrence analysis for effective array prefetching in java. Concurrency and Computation Practice and Experience, 17, February 2005. Google Scholar
Digital Library
- Brendon Cahoon. Effective Compile-Time Analysis for Data Prefetching in Java. PhD thesis, University of Massachusetts, Boston, MA, 2002. Google Scholar
Digital Library
- Edmund. M. Clarke, Orna Grumberg, and Doron~. A. Peled. Model Checking. The MIT Press, Cambridge, MA, 1999. Google Scholar
Digital Library
- Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. The MIT Press, Cambridge, MA, 1990. Google Scholar
Digital Library
- Brian Demsky. Data Structure Repair Using Goal-Directed Reasoning. PhD thesis, Massachusetts Institute of Technology, January 2006. Google Scholar
Digital Library
- Brian Demsky, Michael D. Ernst, Philip J. Guo, Stephen McCamant, Jeff H. Perkins, and Martin Rinard. Inference and enforcement of data structure consistency specifications. In Proc. International Symposium on Software Testing and Analysis (ISSTA), July 2006. Google Scholar
Digital Library
- Brian Demsky and Martin Rinard. Automatic detection and repair of errors in data structures. In Proc. Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2003. Google Scholar
Digital Library
- Bassem Elkarablieh, Iván García, Yuk Lai Suen, and Sarfraz Khurshid. Assertion-based repair of structurally complex data. (Under submission).Google Scholar
- Bassem Elkarablieh, Yahya Zayour, and Sarfraz Khurshid. Efficiently generating structurally complex inputs with thousands of objects. In Proc. European Conference on Object-Oriented Programming (ECOOP), July 2007. Google Scholar
Digital Library
- Sanguthevar Rajasekaran Ellis Horowitz. Computer Algorithms. W. H. Freeman, second edition, 1997.Google Scholar
- Michael D. Ernst. Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington Department of Computer Science and Engineering, Seattle, Washington, August 2000. Google Scholar
Digital Library
- Iván García. Enabling symbolic execution of Java programs using bytecode instrumentation. Master's thesis, The University of Texas at Austin, May 2005.Google Scholar
- Patrice Godefroid. Model checking for programming languages using VeriSoft. In Proc. 24th Annual ACM Symposium on the Principles of Programming Languages (POPL), Paris, France, January 1997. Google Scholar
Digital Library
- Sudhakar Govindavajhala and Andrew W. Appel. Using memory errors to attack a virtual machine. In SP'03: Proceedings of the 2003 IEEE Symposium on Security and Privacy, 2003. Google Scholar
Digital Library
- G. Haugk, F. Lax, R. Royer, and J. Williams. The 5ESS(TM) switching system: Maintenance capabilities. AT&T Technical Journal, 64(6 part 2), 1985.Google Scholar
- Klaus Havelund and Thomas Pressburger. Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, 1999.Google Scholar
- Gerald Holzmann. The model checker SPIN. IEEE Transactions on Software Engineering, 23(5), May 1997. Google Scholar
Digital Library
- Daniel Jackson. Micromodels of software: Modelling and analysis with Alloy, 2001.Google Scholar
- Daniel Jackson. Software Abstractions: Logic, Language and Analysis. The MIT Press, Cambridge, MA, 2006. Google Scholar
Digital Library
- B. Jobstmann, A. Griesmayer, and R. Bloem. Program repair as a game. In 17th Conference on Computer Aided Verification (CAV'05), 2005. Google Scholar
Digital Library
- Maria Jump and Kathryn S. McKinley. Cork: Dynamic memory leak detection for java. In Proc. 34th Annual ACM Symposium on the Principles of Programming Languages (POPL), 2007. Google Scholar
Digital Library
- Feras Karablieh, Rida A. Bazzi, and Margaret Hicks. Compiler-assisted heterogeneous checkpointing. In Symposium on Reliable Distributed Systems (SRDS), October 2001.Google Scholar
Cross Ref
- Sarfraz Khurshid, Iván García, and Yuk Lai Suen. Repairing structurally complex data. In Proc. 12th SPIN Workshop on Software Model Checking, 2005. Google Scholar
Digital Library
- Sarfraz Khurshid, Corina Pasareanu, and Willem Visser. Generalized symbolic execution for model checking and testing. In Proc. 9th Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS), Warsaw, Poland, April 2003. Google Scholar
Digital Library
- J. L. Kim and T. Park. An efficient protocol for checkpointing recovery in distributed systems. IEEE Transactions on Parallel and Distributed Systems, Aug 1993. Google Scholar
Digital Library
- James C. King. Symbolic execution and program testing. Communications of the ACM, 19(7), 1976. Google Scholar
Digital Library
- Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison Wesley, second edition, 1999. Google Scholar
Digital Library
- Barbara Liskov and John Guttag. Program Development in Java: Abstraction, Specification, and Object-Oriented Design. Addison-Wesley, 2000. Google Scholar
Digital Library
- Muhammad Zubair Malik, Aman Pervaiz, and Sarfraz Khurshid. Generating representation invariants of structurally complex data. In Proc. 11th Conference on Tools and Algorithms for Construction and Analysis of Systems (TACAS), 2007. Google Scholar
Digital Library
- Darko Marinov. Automatic Testing of Software with Structurally Complex Inputs. PhD thesis, Computer Science and Artificial Intelligence Laboratory, Massachusetts Institute of Technology, 2004. Google Scholar
Digital Library
- Samiha Mourad and Dorothy Andrews. On the reliability of the IBM MVS/XA operating system. IEEE Transactions on Software Engineering, 13(10), 1987. Google Scholar
Digital Library
- Alexey Smirnov and Tzi-cker Chiueh. DIRA: Automatic detection, identification, and repair of control-hijacking attacks. In The 12th Annual Network and Distributed System Security Symposium, San Diego, CA, February 2005.Google Scholar
- William Stallings. Computer Organization and Architecture., chapter Cache Memory. Prentice-Hall, Englewood Cliffs, NJ, 2006.Google Scholar
- Yuk Lai Suen. Automatically repairing structurally complex data. Master's thesis, Department of Electrical and Computer Engineering, The University of Texas at Austin, May 2005.Google Scholar
- Willem Visser, Klaus Havelund, Guillaume Brat, and SeungJoon Park. Model checking programs. In Proc. 15th Conference on Automated Software Engineering (ASE), Grenoble, France, 2000. Google Scholar
Digital Library
- Tao Xie and David Notkin. Tool-assisted unit test generation and selection based on operational abstractions. Automated Software Engineering Journal, 2006. Google Scholar
Digital Library
Index Terms
Starc: static analysis for efficient repair of complex data
Recommendations
Starc: static analysis for efficient repair of complex data
OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applicationsData structure corruptions are insidious bugs that reduce the reliability of software systems. Constraint-based datastructure repair promises to help programs recover from potentially crippling corruption errors. Prior work repairs a variety of ...
Juzi: a tool for repairing complex data structures
ICSE '08: Proceedings of the 30th international conference on Software engineeringThis paper describes Juzi, a tool for automatic repair of complex data structures. Juzi takes a Java class representing the data structure as well as a predicate method that specifies the structural integrity constraints as inputs. Juzi instruments its ...
Data structure repair using goal-directed reasoning
ICSE '05: Proceedings of the 27th international conference on Software engineeringData structure repair is a promising technique for enabling programs to execute successfully in the presence of otherwise fatal data structure corruption errors. Previous research in this field relied on the developer to write a specification to ...







Comments