Distributed Symbolic Execution using Test-Depth Partitioning
Abstract
Symbolic execution is a classic technique for systematic bug finding, which has seen many applications in recent years but remains hard to scale. Recent work introduced ranged symbolic execution to distribute the symbolic execution task among different workers with minimal communication overhead using test inputs. However, each worker was restricted to perform only a depth-first search. This paper introduces a new approach to ranging, called test-depth partitioning, that allows the workers to employ different search strategies without compromising the completeness of the overall search. Experimental results show that the proposed approach provides a more flexible ranging solution for distributed symbolic execution. The core idea behind test-depth partitioning is to use a test-depth pair to define a region in the execution space. Such a pair represents a partial path or a prefix, and it obviates the need for complete tests to determine boundaries as was the case in the previous ranging scheme. Moreover, different workers have the freedom to select the search strategy of choice without affecting the functioning of the overall system. Test-depth partitioning is implemented using KLEE, a well-known symbolic execution tool. The preliminary results show that the proposed scheme can prove to be an efficient tool to speed up symbolic execution.
- Publication:
-
arXiv e-prints
- Pub Date:
- June 2021
- DOI:
- 10.48550/arXiv.2106.02179
- arXiv:
- arXiv:2106.02179
- Bibcode:
- 2021arXiv210602179S
- Keywords:
-
- Computer Science - Software Engineering
- E-Print:
- 19 pages (16 pages for text and 3 pages for references). 3 figures (Figure 1 has two sub-figures, Figure 2 has 3 sub-figures and Figure 3 has 3 sub-figures). 3 tables. 2 algorithm blocks