Compatible Branch Coverage Driven Symbolic Execution for Efficient Bug Finding

9Citations
Citations of this article
7Readers
Mendeley users who have this article in their library.
Get full text

Abstract

Symbolic execution is a powerful technique for bug finding by generating test inputs to systematically explore all feasible paths within a given threshold. However, its practical usage is often limited by the path explosion problem. In this paper, we propose compatible branch coverage driven symbolic execution for efficient bug finding. Our new technique owns a novel path-pruning strategy obtained from program dependency analysis to effectively avoid unnecessary explorations. Specifically, based on a Compatible Branch Set, our technique directs symbolic execution to explore feasible branches while soundly pruning redundant paths that have no new contributions to branch coverage. We have implemented our approach atop KLEE and conducted experiments on a set of programs from Siemens Suite, GNU Coreutils, and other real-world programs. Experimental results show that, compared with the state-of-The-Art symbolic execution techniques, our approach always uses significantly less time to reproduce bugs while achieving the same or better branch coverage. On average, our approach got over 45% path reduction and 3x speedup on the GNU Coreutils programs.

Cite

CITATION STYLE

APA

Yi, Q., Yu, Y., & Yang, G. (2024). Compatible Branch Coverage Driven Symbolic Execution for Efficient Bug Finding. Proceedings of the ACM on Programming Languages, 8. https://doi.org/10.1145/3656443

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free