A segmented memory model for symbolic execution
Author(s) -
Timotej Kapus,
Cristian Cadar
Publication year - 2019
Publication title -
spiral (imperial college london)
Language(s) - English
Resource type - Conference proceedings
ISBN - 978-1-4503-5572-8
DOI - 10.1145/3338906.3338936
Subject(s) - computer science , symbolic execution , pointer (user interface) , programming language , heap (data structure) , separation logic , memory model , parallel computing , pointer analysis , theoretical computer science , shared memory , artificial intelligence , static analysis , software
Symbolic execution is an effective technique for exploring paths in a program and reasoning about all possible values on those paths. However, the technique still struggles with code that uses complex heap data structures, in which a pointer is allowed to refer to more than one memory object. In such cases, symbolic execution typically forks execution into multiple states, one for each object to which the pointer could refer. In this paper, we propose a technique that avoids this expensive forking by using a segmented memory model. In this model, memory is split into segments, so that each symbolic pointer refers to objects in a single segment. The size of the segments are bound by a threshold, in order to avoid expensive constraints. This results in a memory model where forking due to symbolic pointer dereferences is significantly reduced, often completely. We evaluate our segmented memory model on a mix of whole program benchmarks (such as m4 and make) and library benchmarks (such as SQLite), and observe significant decreases in execution time and memory usage.
Accelerating Research
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom
Address
John Eccles HouseRobert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom