On the Reliability of the IBM MVS/XA Operating System
IEEE Transactions on Software Engineering
Introduction to algorithms
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
The design and implementation of an intentional naming system
Proceedings of the seventeenth ACM symposium on Operating systems principles
Symbolic execution and program testing
Communications of the ACM
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
SAT-Encodings, Search Space Structure, and Local Search Performance
IJCAI '99 Proceedings of the Sixteenth International Joint Conference on Artificial Intelligence
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Dynamically discovering likely program invariants
Dynamically discovering likely program invariants
Automatic detection and repair of errors in data structures
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Inference and enforcement of data structure consistency specifications
Proceedings of the 2006 international symposium on Software testing and analysis
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Efficient software model checking of data structure properties
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Data structure repair using goal-directed reasoning
Data structure repair using goal-directed reasoning
Iterative context bounding for systematic testing of multithreaded programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Generating representation invariants of structurally complex data
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
A new approach to model counting
SAT'05 Proceedings of the 8th international conference on Theory and Applications of Satisfiability Testing
Java-MOP: a monitoring oriented programming environment for java
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Execution generated test cases: how to make systems code crash itself
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Repairing structurally complex data
SPIN'05 Proceedings of the 12th international conference on Model Checking Software
Efficiently generating structurally complex inputs with thousands of objects
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Juzi: a tool for repairing complex data structures
Proceedings of the 30th international conference on Software engineering
Deryaft: a tool for generating representation invariants of structurally complex data
Proceedings of the 30th international conference on Software engineering
Efficient solving of structural constraints
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Supporting automatic model inconsistency fixing
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Generating and Evaluating Choices for Fixing Inconsistencies in UML Design Models
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Dynamic symbolic data structure repair
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Automated support for repairing input-model faults
Proceedings of the IEEE/ACM international conference on Automated software engineering
DSDSR: a tool that uses dynamic symbolic execution for data structure repair
Proceedings of the Eighth International Workshop on Dynamic Analysis
What can the GC compute efficiently?: a language for heap assertions at GC time
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Falling back on executable specifications
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Introducing specification-based data structure repair using alloy
ABZ'10 Proceedings of the Second international conference on Abstract State Machines, Alloy, B and Z
History-Aware data structure repair using SAT
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Scaling symbolic execution using ranged analysis
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Data model property inference and repair
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Automatic recovery from runtime failures
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
Programmers have long used assertions to characterize properties of code. An assertion violation signals a corruption in the programstate. At such a state, it is standard to terminate the program, debug it if possible, and re-execute it. We propose a new view: instead of terminating the program, use the violated assertion as a basis of repairing the state of the program and let it continue. We present a novel algorithm to repair complex data structures. Given a structure that violates an assertion that represents its integrity constraints, our algorithm performs a systematic search based on symbolic execution to repair the structure, i.e., mutate it such that the resulting structure satisfies the given constraints. Heuristics to prune search and minimize mutations enable efficient and effective repair. Experiments using libraries and applications, such as a naming architecture and a database engine, show that our prototype efficiently repairs complex structures while enabling systems to recover from potentially crippling errors.