BLISS: Improved Symbolic Execution by Bounded Lazy Initialization with SAT Support

被引:25
作者
Rosner, Nicolas [1 ]
Geldenhuys, Jaco [2 ]
Aguirre, Nazareno M. [3 ,4 ]
Visser, Willem [2 ]
Frias, Marcelo F. [5 ,6 ]
机构
[1] Univ Buenos Aires, Dept Comp Sci, FCEyN, Buenos Aires, DF, Argentina
[2] Univ Stellenbosch, Dept Comp Sci, ZA-7600 Stellenbosch, South Africa
[3] Univ Nacl Rio Cuarto, Dept Comp Sci, FCEFQyN, Rio Cuarto, Argentina
[4] Consejo Nacl Invest Cient & Tecn, Rio Cuarto, Argentina
[5] Univ Buenos Aires, Dept Software Engn, Inst Tecnol Buenos Aires, Buenos Aires, DF, Argentina
[6] Consejo Nacl Invest Cient & Tecn, RA-1033 Buenos Aires, DF, Argentina
关键词
Symbolic execution; lazy initialization; tight field bounds; Symbolic PathFinder; MODEL CHECKING; VERIFICATION;
D O I
10.1109/TSE.2015.2389225
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Lazy Initialization (LI) allows symbolic execution to effectively deal with heap-allocated data structures, thanks to a significant reduction in spurious and redundant symbolic structures. Bounded lazy initialization (BLI) improves on LI by taking advantage of precomputed relational bounds on the interpretation of class fields in order to reduce the number of spurious structures even further. In this paper we present bounded lazy initialization with SAT support (BLISS), a novel technique that refines the search for valid structures during the symbolic execution process. BLISS builds upon BLI, extending it with field bound refinement and satisfiability checks. Field bounds are refined while a symbolic structure is concretized, avoiding cases that, due to the concrete part of the heap and the field bounds, can be deemed redundant. Satisfiability checks on refined symbolic heaps allow us to prune these heaps as soon as they are identified as infeasible, i.e., as soon as it can be confirmed that they cannot be extended to any valid concrete heap. Compared to LI and BLI, BLISS reduces the time required by LI by up to four orders of magnitude for the most complex data structures. Moreover, the number of partially symbolic structures obtained by exploring program paths is reduced by BLISS by over 50 percent, with reductions of over 90 percent in some cases (compared to LI). BLISS uses less memory than LI and BLI, which enables the exploration of states unreachable by previous techniques.
引用
收藏
页码:639 / 660
页数:22
相关论文
共 23 条
[1]  
[Anonymous], FMCO LECT NOTES COMP
[2]  
Boyapati C., 2002, Software Engineering Notes, V27, P123, DOI 10.1145/566171.566191
[3]  
Cadar C., 2008, Proceedings of the 8th USENIX conference on Operating systems design and implementation, OSDI'08, (USA), P209
[4]  
Cadar C, 2011, 2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), P1066, DOI 10.1145/1985793.1985995
[5]  
Clarke EM, 1999, MODEL CHECKING, P1
[6]   Towards a case-optimal symbolic execution algorithm for analyzing strong properties of object-oriented programs [J].
Deng, Xianghua ;
Robby ;
Hatcliff, John .
SEFM 2007: FIFTH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING AND FORMAL METHODS, PROCEEDINGS, 2007, :273-+
[7]  
Deng XH, 2006, IEEE INT CONF AUTOM, P157
[8]  
Dennis G, 2008, LECT NOTES COMPUT SC, V5295, P130, DOI 10.1007/978-3-540-87873-5_13
[9]  
Flanagan C., 2002, P ACM SIGPLAN C PROG
[10]  
Galeotti J. P., 2010, P 19 INT S SOFTW TES, P234