Cargando…

Under-approximating loops in C programs for fast counterexample detection

Many software model checkers only detect counterexamples with deep loops after exploring numerous spurious and increasingly longer counterexamples. We propose a technique that aims at eliminating this weakness by constructing auxiliary paths that represent the effect of a range of loop iterations. U...

Descripción completa

Detalles Bibliográficos
Autores principales: Kroening, Daniel, Lewis, Matt, Weissenbacher, Georg
Formato: Online Artículo Texto
Lenguaje:English
Publicado: Springer US 2015
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4750468/
https://www.ncbi.nlm.nih.gov/pubmed/26900259
http://dx.doi.org/10.1007/s10703-015-0228-1
_version_ 1782415440487645184
author Kroening, Daniel
Lewis, Matt
Weissenbacher, Georg
author_facet Kroening, Daniel
Lewis, Matt
Weissenbacher, Georg
author_sort Kroening, Daniel
collection PubMed
description Many software model checkers only detect counterexamples with deep loops after exploring numerous spurious and increasingly longer counterexamples. We propose a technique that aims at eliminating this weakness by constructing auxiliary paths that represent the effect of a range of loop iterations. Unlike acceleration, which captures the exact effect of arbitrarily many loop iterations, these auxiliary paths may under-approximate the behaviour of the loops. In return, the approximation is sound with respect to the bit-vector semantics of programs. Our approach supports arbitrary conditions and assignments to arrays in the loop body, but may as a result introduce quantified conditionals. To reduce the resulting performance penalty, we present two quantifier elimination techniques specially geared towards our application. Loop under-approximation can be combined with a broad range of verification techniques. We paired our techniques with lazy abstraction and bounded model checking, and evaluated the resulting tool on a number of buffer overflow benchmarks, demonstrating its ability to efficiently detect deep counterexamples in C programs that manipulate arrays.
format Online
Article
Text
id pubmed-4750468
institution National Center for Biotechnology Information
language English
publishDate 2015
publisher Springer US
record_format MEDLINE/PubMed
spelling pubmed-47504682016-02-19 Under-approximating loops in C programs for fast counterexample detection Kroening, Daniel Lewis, Matt Weissenbacher, Georg Form Methods Syst Des Article Many software model checkers only detect counterexamples with deep loops after exploring numerous spurious and increasingly longer counterexamples. We propose a technique that aims at eliminating this weakness by constructing auxiliary paths that represent the effect of a range of loop iterations. Unlike acceleration, which captures the exact effect of arbitrarily many loop iterations, these auxiliary paths may under-approximate the behaviour of the loops. In return, the approximation is sound with respect to the bit-vector semantics of programs. Our approach supports arbitrary conditions and assignments to arrays in the loop body, but may as a result introduce quantified conditionals. To reduce the resulting performance penalty, we present two quantifier elimination techniques specially geared towards our application. Loop under-approximation can be combined with a broad range of verification techniques. We paired our techniques with lazy abstraction and bounded model checking, and evaluated the resulting tool on a number of buffer overflow benchmarks, demonstrating its ability to efficiently detect deep counterexamples in C programs that manipulate arrays. Springer US 2015-04-17 2015 /pmc/articles/PMC4750468/ /pubmed/26900259 http://dx.doi.org/10.1007/s10703-015-0228-1 Text en © The Author(s) 2015 Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
spellingShingle Article
Kroening, Daniel
Lewis, Matt
Weissenbacher, Georg
Under-approximating loops in C programs for fast counterexample detection
title Under-approximating loops in C programs for fast counterexample detection
title_full Under-approximating loops in C programs for fast counterexample detection
title_fullStr Under-approximating loops in C programs for fast counterexample detection
title_full_unstemmed Under-approximating loops in C programs for fast counterexample detection
title_short Under-approximating loops in C programs for fast counterexample detection
title_sort under-approximating loops in c programs for fast counterexample detection
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4750468/
https://www.ncbi.nlm.nih.gov/pubmed/26900259
http://dx.doi.org/10.1007/s10703-015-0228-1
work_keys_str_mv AT kroeningdaniel underapproximatingloopsincprogramsforfastcounterexampledetection
AT lewismatt underapproximatingloopsincprogramsforfastcounterexampledetection
AT weissenbachergeorg underapproximatingloopsincprogramsforfastcounterexampledetection