Evaluation of String Constraint Solvers in the Context of Symbolic Execution
Symbolic execution tools query constraint solvers for tasks such as determining the feasibility of program paths. Therefore, the effectiveness of such tools depends on their constraint solvers.
Most modern constraint solvers for primitive types are efficient and accurate. However, research on constraint solvers for complex types, such as strings, is less converged.
In this paper, we introduce two new solver adequacy criteria, modeling cost and accuracy, to help the user identify an adequate solver. Using these metrics and performance criterion, we evaluate four distinct string constraint solvers in the context of symbolic execution. Our results show that, depending on the needs of the user and composition of the program, one solver might be more appropriate than another. Yet, none of the solvers exhibit the best results for all programs. Hence, if resources permit, the user will benefit the most from executing all solvers in parallel and enabling communication between solvers.
Kausler, Scott; and Sherman, Elena. (2014). "Evaluation of String Constraint Solvers in the Context of Symbolic Execution". ASE '14 Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering, 259-270.