2020
DOI: 10.1145/3428244
|View full text |Cite
|
Sign up to set email alerts
|

Sound garbage collection for C using pointer provenance

Abstract: Garbage collection (GC) support for unmanaged languages can reduce programming burden in reasoning about liveness of dynamic objects. It also avoids temporal memory safety violations and memory leaks. Sound GC for weakly-typed languages such as C/C++, however, remains an unsolved problem. Current value-based GC solutions examine values of memory locations to discover the pointers, and the objects they point to. The approach is inherently unsound in the presence of arbitrary type casts a… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
7
0

Year Published

2022
2022
2024
2024

Publication Types

Select...
2
1

Relationship

0
3

Authors

Journals

citations
Cited by 3 publications
(7 citation statements)
references
References 105 publications
0
7
0
Order By: Relevance
“…MineSweeper preserves compatibility with hidden and misaligned pointers; while these are rare, they are common enough that not supporting them breaks real programs [2]. MineSweeper achieves this by not freeing anything the programmer has not requested to be freed, unlike garbage collectors [8], which are unsafe in C/C++ without additional provenance tracking and sticking strictly to the C/C++ standard [5], and significantly more expensive than MineSweeper [2,5]. It gives no additional security guarantees for objects whose only pointers are hidden.…”
Section: Threat Modelmentioning
confidence: 99%
See 1 more Smart Citation
“…MineSweeper preserves compatibility with hidden and misaligned pointers; while these are rare, they are common enough that not supporting them breaks real programs [2]. MineSweeper achieves this by not freeing anything the programmer has not requested to be freed, unlike garbage collectors [8], which are unsafe in C/C++ without additional provenance tracking and sticking strictly to the C/C++ standard [5], and significantly more expensive than MineSweeper [2,5]. It gives no additional security guarantees for objects whose only pointers are hidden.…”
Section: Threat Modelmentioning
confidence: 99%
“…The sweep is largely independent of the application thread: to limit its performance impact, we can run it concurrently with the application. Still, the sweep should see a consistent picture of memory to avoid pointers being lost 5 .…”
Section: Concurrencymentioning
confidence: 99%
“…With this goal in mind, we bring, from the systems community into the software engineering community techniques to create Program Inspection Points, a notion that we define in Section 2. Like in classic garbage collectors for C/C++, [6][7][8][9][10] inspection points impose no overhead on programs unless they need to be inspected; Moreover, like in that line of work, we are willing to accept some imprecision: the inability to distinguish pointers from integers, for instance, might prevent the inspection of some parts of the heap. Yet, in contrast to garbage collectors, we provide the program with the means to associate low-level data-heap and stack allocated memory, for instance-with high-level source-code information: user-defined names and line locations.…”
Section: Contributionsmentioning
confidence: 99%
“…5 They own this qualifier to a weak type system, that neither associates size information with memory regions, nor distinguish pointers from scalars. Although there exist garbage collectors for languages like C or C++, [6][7][8][9][10] such implementations are not mainstream. The more reliable these garbage collectors are, the heavier their overhead.…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation