Arithmetizing Shape Analysis

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Wolff, Sebastian, Gupta, Ekanshdeep, Esen, Zafer, Hojjat, Hossein, Rümmer, Philipp, Wies, Thomas
Format: Preprint
Veröffentlicht: 2024
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866913470892474368
author Wolff, Sebastian
Gupta, Ekanshdeep
Esen, Zafer
Hojjat, Hossein
Rümmer, Philipp
Wies, Thomas
author_facet Wolff, Sebastian
Gupta, Ekanshdeep
Esen, Zafer
Hojjat, Hossein
Rümmer, Philipp
Wies, Thomas
contents Memory safety is an essential correctness property of software systems. For programs operating on linked heap-allocated data structures, the problem of proving memory safety boils down to analyzing the possible shapes of data structures, leading to the field of shape analysis. This paper presents a novel reduction-based approach to memory safety analysis that relies on two forms of abstraction: flow abstraction, representing global properties of the heap graph through local flow equations; and view abstraction, which enable verification tools to reason symbolically about an unbounded number of heap objects. In combination, the two abstractions make it possible to reduce memory-safety proofs to proofs about heap-less imperative programs that can be discharged using off-the-shelf software verification tools without built-in support for heap reasoning. Using an empirical evaluation on a broad range of programs, the paper shows that the reduction approach can effectively verify memory safety for sequential and concurrent programs operating on different kinds of linked data structures, including singly-linked, doubly-linked, and nested lists as well as trees.
format Preprint
id arxiv_https___arxiv_org_abs_2408_09037
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Arithmetizing Shape Analysis
Wolff, Sebastian
Gupta, Ekanshdeep
Esen, Zafer
Hojjat, Hossein
Rümmer, Philipp
Wies, Thomas
Programming Languages
Memory safety is an essential correctness property of software systems. For programs operating on linked heap-allocated data structures, the problem of proving memory safety boils down to analyzing the possible shapes of data structures, leading to the field of shape analysis. This paper presents a novel reduction-based approach to memory safety analysis that relies on two forms of abstraction: flow abstraction, representing global properties of the heap graph through local flow equations; and view abstraction, which enable verification tools to reason symbolically about an unbounded number of heap objects. In combination, the two abstractions make it possible to reduce memory-safety proofs to proofs about heap-less imperative programs that can be discharged using off-the-shelf software verification tools without built-in support for heap reasoning. Using an empirical evaluation on a broad range of programs, the paper shows that the reduction approach can effectively verify memory safety for sequential and concurrent programs operating on different kinds of linked data structures, including singly-linked, doubly-linked, and nested lists as well as trees.
title Arithmetizing Shape Analysis
topic Programming Languages
url https://arxiv.org/abs/2408.09037