kirancodes.me
To Proof Maintenance & Beyond!

LISSA: Lazy Initialization with Specialized Solver Aid

Juan Manuel Copia, Pablo Ponzio, Nazareno Aguirre, Alessandra Gorla, Marcelo F. Frias

Abstract

Programs that deal with heap-allocated inputs are difficult to analyze with symbolic execution (SE). Lazy Initialization (LI) is an approach to SE that deals with heap-allocated inputs by starting SE over a fully symbolic heap, and initializing the inputs’ fields on demand, as the program under analysis accesses them. However, when the program’s assumed precondition has structural constraints over the inputs, operationally captured via repOK routines, LI may produce spurious symbolic structures, making SE traverse infeasible paths and undermining SE’s performance. repOK can only decide the feasibility of fully concrete structures, and thus previous work relied on manually crafted specifications designed to decide the (in)validity of partially symbolic inputs, to avoid producing spurious symbolic structures. However, these additional specifications require significant further effort from the developers.

BibTeX
@inproceedings{Copia-al:ASE22,
  author    = {Juan Manuel Copia and
               Pablo Ponzio and
               Nazareno Aguirre and
               Alessandra Gorla and
               Marcelo F. Frias},
  title     = {{LISSA:} Lazy Initialization with Specialized Solver Aid},
  booktitle = {ASE},
  pages     = {67:1--67:12},
  publisher = {{ACM}},
  year      = {2022},
}

Related papers