Sebastian Wolff, Ekanshdeep Gupta, Zafer Esen, Hossein Hojjat, Philipp Rümmer, Thomas Wies
{"title":"形状分析的算术化","authors":"Sebastian Wolff, Ekanshdeep Gupta, Zafer Esen, Hossein Hojjat, Philipp Rümmer, Thomas Wies","doi":"arxiv-2408.09037","DOIUrl":null,"url":null,"abstract":"Memory safety is an essential correctness property of software systems. For\nprograms operating on linked heap-allocated data structures, the problem of\nproving memory safety boils down to analyzing the possible shapes of data\nstructures, leading to the field of shape analysis. This paper presents a novel\nreduction-based approach to memory safety analysis that relies on two forms of\nabstraction: flow abstraction, representing global properties of the heap graph\nthrough local flow equations; and view abstraction, which enable verification\ntools to reason symbolically about an unbounded number of heap objects. In\ncombination, the two abstractions make it possible to reduce memory-safety\nproofs to proofs about heap-less imperative programs that can be discharged\nusing off-the-shelf software verification tools without built-in support for\nheap reasoning. Using an empirical evaluation on a broad range of programs, the\npaper shows that the reduction approach can effectively verify memory safety\nfor sequential and concurrent programs operating on different kinds of linked\ndata structures, including singly-linked, doubly-linked, and nested lists as\nwell as trees.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":"62 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-08-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Arithmetizing Shape Analysis\",\"authors\":\"Sebastian Wolff, Ekanshdeep Gupta, Zafer Esen, Hossein Hojjat, Philipp Rümmer, Thomas Wies\",\"doi\":\"arxiv-2408.09037\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Memory safety is an essential correctness property of software systems. For\\nprograms operating on linked heap-allocated data structures, the problem of\\nproving memory safety boils down to analyzing the possible shapes of data\\nstructures, leading to the field of shape analysis. This paper presents a novel\\nreduction-based approach to memory safety analysis that relies on two forms of\\nabstraction: flow abstraction, representing global properties of the heap graph\\nthrough local flow equations; and view abstraction, which enable verification\\ntools to reason symbolically about an unbounded number of heap objects. In\\ncombination, the two abstractions make it possible to reduce memory-safety\\nproofs to proofs about heap-less imperative programs that can be discharged\\nusing off-the-shelf software verification tools without built-in support for\\nheap reasoning. Using an empirical evaluation on a broad range of programs, the\\npaper shows that the reduction approach can effectively verify memory safety\\nfor sequential and concurrent programs operating on different kinds of linked\\ndata structures, including singly-linked, doubly-linked, and nested lists as\\nwell as trees.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":\"62 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-08-16\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"arXiv - CS - Programming Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/arxiv-2408.09037\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2408.09037","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
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.