Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1297027.1297056acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Starc: static analysis for efficient repair of complex data

Published: 21 October 2007 Publication History

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.

References

[1]
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.
[2]
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.
[3]
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.
[4]
Douglas Barry. Web Services and Service-Oriented Architectures: The Savvy Manager's Guide., chapter Service Oriented Architecture. Morgan Kaufmann Publishers, 2003.
[5]
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.
[6]
B. Cahoon and K. McKinley. Recurrence analysis for effective array prefetching in java. Concurrency and Computation Practice and Experience, 17, February 2005.
[7]
Brendon Cahoon. Effective Compile-Time Analysis for Data Prefetching in Java. PhD thesis, University of Massachusetts, Boston, MA, 2002.
[8]
Edmund. M. Clarke, Orna Grumberg, and Doron~. A. Peled. Model Checking. The MIT Press, Cambridge, MA, 1999.
[9]
Thomas H. Cormen, Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. The MIT Press, Cambridge, MA, 1990.
[10]
Brian Demsky. Data Structure Repair Using Goal-Directed Reasoning. PhD thesis, Massachusetts Institute of Technology, January 2006.
[11]
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.
[12]
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.
[13]
Bassem Elkarablieh, Iván García, Yuk Lai Suen, and Sarfraz Khurshid. Assertion-based repair of structurally complex data. (Under submission).
[14]
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.
[15]
Sanguthevar Rajasekaran Ellis Horowitz. Computer Algorithms. W. H. Freeman, second edition, 1997.
[16]
Michael D. Ernst. Dynamically Discovering Likely Program Invariants. PhD thesis, University of Washington Department of Computer Science and Engineering, Seattle, Washington, August 2000.
[17]
Iván García. Enabling symbolic execution of Java programs using bytecode instrumentation. Master's thesis, The University of Texas at Austin, May 2005.
[18]
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.
[19]
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.
[20]
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.
[21]
Klaus Havelund and Thomas Pressburger. Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, 1999.
[22]
Gerald Holzmann. The model checker SPIN. IEEE Transactions on Software Engineering, 23(5), May 1997.
[23]
Daniel Jackson. Micromodels of software: Modelling and analysis with Alloy, 2001.
[24]
Daniel Jackson. Software Abstractions: Logic, Language and Analysis. The MIT Press, Cambridge, MA, 2006.
[25]
B. Jobstmann, A. Griesmayer, and R. Bloem. Program repair as a game. In 17th Conference on Computer Aided Verification (CAV'05), 2005.
[26]
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.
[27]
Feras Karablieh, Rida A. Bazzi, and Margaret Hicks. Compiler-assisted heterogeneous checkpointing. In Symposium on Reliable Distributed Systems (SRDS), October 2001.
[28]
Sarfraz Khurshid, Iván García, and Yuk Lai Suen. Repairing structurally complex data. In Proc. 12th SPIN Workshop on Software Model Checking, 2005.
[29]
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.
[30]
J. L. Kim and T. Park. An efficient protocol for checkpointing recovery in distributed systems. IEEE Transactions on Parallel and Distributed Systems, Aug 1993.
[31]
James C. King. Symbolic execution and program testing. Communications of the ACM, 19(7), 1976.
[32]
Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison Wesley, second edition, 1999.
[33]
Barbara Liskov and John Guttag. Program Development in Java: Abstraction, Specification, and Object-Oriented Design. Addison-Wesley, 2000.
[34]
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.
[35]
Darko Marinov. Automatic Testing of Software with Structurally Complex Inputs. PhD thesis, Computer Science and Artificial Intelligence Laboratory, Massachusetts Institute of Technology, 2004.
[36]
Samiha Mourad and Dorothy Andrews. On the reliability of the IBM MVS/XA operating system. IEEE Transactions on Software Engineering, 13(10), 1987.
[37]
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.
[38]
William Stallings. Computer Organization and Architecture., chapter Cache Memory. Prentice-Hall, Englewood Cliffs, NJ, 2006.
[39]
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.
[40]
Willem Visser, Klaus Havelund, Guillaume Brat, and SeungJoon Park. Model checking programs. In Proc. 15th Conference on Automated Software Engineering (ASE), Grenoble, France, 2000.
[41]
Tao Xie and David Notkin. Tool-assisted unit test generation and selection based on operational abstractions. Automated Software Engineering Journal, 2006.

Cited By

View all
  • (2019)Effective State Encoding for Breadth-First Generation of Complex StructuresIEEE Transactions on Reliability10.1109/TR.2019.291198968:3(1154-1167)Online publication date: Sep-2019
  • (2018)Shooting from the heap: ultra-scalable static analysis with heap snapshotsProceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3213846.3213860(198-208)Online publication date: 12-Jul-2018
  • (2015)CLOTHO: saving programs from malformed strings and incorrect string-handlingProceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering10.1145/2786805.2786877(555-566)Online publication date: 30-Aug-2015
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '07: Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems, languages and applications
October 2007
728 pages
ISBN:9781595937865
DOI:10.1145/1297027
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 42, Issue 10
    Proceedings of the 2007 OOPSLA conference
    October 2007
    686 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1297105
    Issue’s Table of Contents
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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 October 2007

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. data structure repair
  2. static analysis
  3. symbolic execution

Qualifiers

  • Article

Conference

OOPSLA07
Sponsor:

Acceptance Rates

OOPSLA '07 Paper Acceptance Rate 33 of 156 submissions, 21%;
Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Effective State Encoding for Breadth-First Generation of Complex StructuresIEEE Transactions on Reliability10.1109/TR.2019.291198968:3(1154-1167)Online publication date: Sep-2019
  • (2018)Shooting from the heap: ultra-scalable static analysis with heap snapshotsProceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3213846.3213860(198-208)Online publication date: 12-Jul-2018
  • (2015)CLOTHO: saving programs from malformed strings and incorrect string-handlingProceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering10.1145/2786805.2786877(555-566)Online publication date: 30-Aug-2015
  • (2012)Modular and verified automatic program repairACM SIGPLAN Notices10.1145/2398857.238462647:10(133-146)Online publication date: 19-Oct-2012
  • (2012)Modular and verified automatic program repairProceedings of the ACM international conference on Object oriented programming systems languages and applications10.1145/2384616.2384626(133-146)Online publication date: 19-Oct-2012
  • (2012)Lightweight Data-Flow Analysis for Execution-Driven Constraint SolvingProceedings of the 2012 IEEE Fifth International Conference on Software Testing, Verification and Validation10.1109/ICST.2012.89(91-100)Online publication date: 17-Apr-2012
  • (2012)A refined decompiler to generate C code with high readabilitySoftware: Practice and Experience10.1002/spe.213843:11(1337-1358)Online publication date: 13-Jul-2012
  • (2010)Falling back on executable specificationsProceedings of the 24th European conference on Object-oriented programming10.5555/1883978.1884015(552-576)Online publication date: 21-Jun-2010
  • (2010)What can the GC compute efficiently?ACM SIGPLAN Notices10.1145/1932682.186948245:10(256-269)Online publication date: 17-Oct-2010
  • (2010)What can the GC compute efficiently?Proceedings of the ACM international conference on Object oriented programming systems languages and applications10.1145/1869459.1869482(256-269)Online publication date: 17-Oct-2010
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media