RUS  ENG
Full version
JOURNALS // Proceedings of the Institute for System Programming of the RAS // Archive

Proceedings of ISP RAS, 2023 Volume 35, Issue 3, Pages 91–108 (Mi tisp789)

“Symcrete” memory model with lazy initialization and objects of symbolic sizes in KLEE

S. A. Morozova, A. V. Misonizhnikb, D. A. Mordvinovc, D. V. Koznovc, D. A. Ivanovd

a National Research University Higher School of Economics
b IT Solutions Inc.
c Saint Petersburg State University
d Huawei Technologies Co., Ltd.

Abstract: Dynamic symbolic execution is a well-known technique for testing applications. It introduces symbolic variables – program data with no concrete value at the moment of instantiation – and uses them to systematically explore the execution paths in a program under analysis. However, not every value can be easily modelled as symbolic: for instance, some values may take values from restricted domains or have complex invariants, hard enough to model using existing logic theories, despite it is not a problem for concrete computations. In this paper, we propose an implementation of infrastructure for dealing with such “hard-to-be-modelled” values. We take the approach known as symcrete execution and implement its robust and scalable version in the well-known KLEE symbolic execution engine. We use this infrastructure to support the symbolic execution of LLVM programs with complex input data structures and input buffers with indeterminate sizes.

Keywords: symbolic execution, software analysis, lazy initialization, symcrete execution, smt-solvers

Language: English

DOI: 10.15514/ISPRAS-2023-35(3)-7



© Steklov Math. Inst. of RAS, 2024