Sparse Symbolic Loop Execution (Registered Report)
Dynamic symbolic execution is a powerful program analysis technique but is often limited by the path-explosion problem, particularly in the presence of heavily branching loops. In this paper, we introduce sparse symbolic loop execution (SSLE), a novel approach aimed at mitigating this issue. SSLE observes the edge patterns of sibling states, spawned from the same loop, at program branches up to a pre-computed loop-impact barrier. States that exhibit unique patterns of taken edges are selected for further exploration, while others are postponed. We implemented SSLE in a prototype called SparKLE and evaluated it on a set of 8 benchmarks against the popular symbolic execution engine KLEE. SSLE shows promising results and could increase line coverage by up to 55% in 1h runs using a depth-first-search heuristic. In other cases up to 99.997% of states could be postponed without any loss in coverage. Our planned evaluation will include a diverse set of 50 real-world benchmarks and will aim to better understand the effectiveness of SparKLE in handling symbolic loops, and how it compares with less complex approaches.
Authors
- Frank Busse (ORCID: https://orcid.org/0000-0003-1661-0439)
- Cristian Cadar (ORCID: https://orcid.org/0000-0002-3599-7264)
- Martin Nowack (ORCID: https://orcid.org/0000-0002-1177-0233)
Institutions
- Imperial College London (GB)
Publication Details
- Published
- 2024-09-13
- DOI
- https://doi.org/10.1145/3678722.3685535
- Primary Topic
- Software Testing and Debugging Techniques
- Type
- article
- Field-Weighted Citation Impact
- 0.00