ABSTRACT
Generic repair of complex data structures is a new and exciting area of research. Existing approaches can integrate with good software engineering practices such as program assertions. But in practice there is a wide variety of assertions and not all of them satisfy the style rules imposed by existing repair techniques. I.e., a "badly" written assertion may render generic repair inefficient or ineffective. In this paper we build on the state of the art in generic repair and discuss how generic repair can work effectively with a wider range of correctness conditions.
We motivate how dynamic symbolic techniques enable generic repair to support a wider range of correctness conditions and present DSDSR, a novel repair algorithm based on dynamic symbolic execution. We implement the algorithm for Java and report initial empirical results to demonstrate the promise of our approach for generic repair.
- C. Boyapati, S. Khurshid, and D. Marinov. Korat: Automated testing based on Java predicates. In Proc. ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA), pages 123--133. ACM, July 2002. Google ScholarDigital Library
- É. Bruneton, R. Lenglet, and T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. In Proc. ACM SIGOPS France Journées Composants 2002: Systèmes à composants adaptables et extensibles (Adaptable and extensible component systems), Nov. 2002.Google Scholar
- G. A. Cohen, J. S. Chase, and D. L. Kaminsky. Automatic program transformation with Joie. In Proc. USENIX Annual Technical Symposium, pages 167--178. USENIX, June 1998. Google ScholarDigital Library
- B. Demsky. Data Structure Repair Using Goal-Directed Reasoning. PhD thesis, Massachusetts Institute of Technology, 2006. Google ScholarDigital Library
- B. Demsky and M. C. Rinard. Automatic detection and repair of errors in data structures. In Proc. 18th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 78--95. ACM, Oct. 2003. Google ScholarDigital Library
- B. Elkarablieh, I. Garcia, Y. L. Suen, and S. Khurshid. Assertion-based repair of complex data structures. In Proc. 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE), pages 64--73. ACM, Nov. 2007. Google ScholarDigital Library
- B. Elkarablieh and S. Khurshid. Juzi: a tool for repairing complex data structures. In Proc. 30th ACM/IEEE International Conference on Software Engineering (ICSE), pages 855--858. ACM, May 2008. Google ScholarDigital Library
- P. Godefroid, N. Klarlund, and K. Sen. Dart: Directed automated random testing. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 213--223. ACM, June 2005. Google ScholarDigital Library
- G. Kudrjavets, N. Nagappan, and T. Ball. Assessing the relationship between software assertions and faults: An empirical investigation. In Proc. 17th IEEE International Symposium on Software Reliability Engineering (ISSRE), pages 204--212. IEEE, Nov. 2006. Google ScholarDigital Library
- M. Z. Malik, K. Ghori, B. Elkarablieh, and S. Khurshid. A case for automated debugging using data structure repair. In 24th IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, Nov. 2009. Google ScholarDigital Library
- S. Mourad and D. Andrews. On the reliability of the IBM MVS/XA operating system. IEEE Transactions on Software Engineering (TSE), 13(10):1135--1139, Oct. 1987. Google ScholarDigital Library
- K. Sen and G. Agha. Cute and jCute: Concolic unit testing and explicit path model-checking tools. In Proc. International Conference on Computer Aided Verification (CAV), pages 419--423. Springer, Aug. 2006. Google ScholarDigital Library
- N. Tillmann and J. de Halleux. Pex - white box test generation for .Net. In Proc. 2nd International Conference on Tests And Proofs (TAP), pages 134--153. Springer, Apr. 2008. Google ScholarDigital Library
Index Terms
- Dynamic symbolic data structure repair
Recommendations
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 ...
DSDSR: a tool that uses dynamic symbolic execution for data structure repair
WODA '10: Proceedings of the Eighth International Workshop on Dynamic AnalysisWe present DSDSR, a generic repair tool for complex data structures. Generic, automatic data structure repair algorithms have applications in many areas. Reducing repair time can may therefore have a significant impact on software robustness. Current ...
Constraint-Based Program Debugging Using Data Structure Repair
ICST '11: Proceedings of the 2011 Fourth IEEE International Conference on Software Testing, Verification and ValidationDevelopers have used data structure repair over the last few decades as an effective means to recover on-the-fly from errors in program state. Traditional repair techniques were based on dedicated repair routines, whereas more recent techniques have ...
Comments