Memory safety without runtime checks or garbage collection

@inproceedings{Dhurjati2003MemorySW,
  title={Memory safety without runtime checks or garbage collection},
  author={D. Dhurjati and S. Kowshik and V. Adve and Chris Lattner},
  booktitle={LCTES '03},
  year={2003}
}
Traditional approaches to enforcing memory safety of programs rely heavily on runtime checks of memory accesses and on garbage collection, both of which are unattractive for embedded applications. The long-term goal of our work is to enable 100% static enforcement of memory safety for embedded programs through advanced compiler techniques and minimal semantic restrictions on programs. The key result of this paper is a compiler technique that ensures memory safety of dynamically allocated memory… Expand
Memory safety without garbage collection for embedded applications
TLDR
A compiler technique is described that ensures that dereferencing dangling pointers to freed memory does not violate memory safety, without annotations, run-time checks, or garbage collection, and works for arbitrary type-safe C programs. Expand
Project snowflake: non-blocking safe manual memory management in .NET
TLDR
This work proposes integrating safe manual memory management with garbage collection in the .NET runtime to get the best of both worlds, and shows substantial performance gains especially in multithreaded scenarios. Expand
Simple, fast, and safe manual memory management
TLDR
This work proposes a much simpler programming model that does not require any of the concepts of regions, unique pointers, borrowing of references, and ownership types, and proposes an efficient implementation of this Programming model that guarantees type safety. Expand
Sound garbage collection for C using pointer provenance
TLDR
Several static analysis optimizations are discussed, that can be employed during compilation aided with profiling, to significantly reduce the overhead of dynamic provenance tracking from nearly 8× to 16% for well-behaved programs that adhere to the C standards. Expand
Enforcing Alias Analysis for Weakly Typed Languages
TLDR
A compilation strategy for standard C programs that guarantees sound semantics for an aggressive interprocedural pointer analysis, a call graph, and type information for a subset of memory and shows that the sound analysis information enables static checking techniques that reliably eliminate many run-time checks. Expand
Static Analysis To Improve Compiler Sanitization
Software security problems in inherently unsafe languages (C/C++) can be addressed by compiler tools that automatically insert checks that trap execution when exploitable faults are encountered atExpand
CETS : Compiler-Enforced Temporal Safety for C Santosh Nagarakatte Jianzhou
TLDR
A formal proof shows that this is sufficient to provide temporal safety even in the presence of arbitrary casts if the program contains no spatial safety violations, and the CETS prototype employs both temporal check removal optimizations and traditional compiler optimizations to achieve a runtime overhead of just 48% on average. Expand
Tag-Protector: An Effective and Dynamic Detection of Illegal Memory Accesses through Compile Time Code Instrumentation
TLDR
A new and effective method of instrumenting an application’s source code at compile time in order to detect illegal spatial and temporal memory accesses based on creating tags to be coupled with each memory allocation and then placing additional tag checking instructions for each access made to the memory. Expand
Short-term Memory for Self-collecting Mutators, Revised Version
TLDR
A new memory model for heap management and concurrent implementations of short-term memory for Java and C, called self-collecting mutators, which provides constant execution time of all operations, independent of the number of reachable objects, and constant short- term memory consumption after a steady state has been reached. Expand
Magpie: precise garbage collection for c
TLDR
This dissertation describes Magpie, a system that uses several analyses and conversion techniques to relieve much of the burden of this conversion, and describes the effects of the conversion on several sample programs. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 28 REFERENCES
Typed memory management in a calculus of capabilities
TLDR
A compiler intermediate language, called the Capability Calculus, is presented that supports region-based memory management, enjoys a provably safe type system, and is straightforward to compile to a typed assembly language. Expand
Ownership types for safe region-based memory management in real-time Java
TLDR
The experience indicates that the type system presented is sufficiently expressive and requires little programming overhead, and that eliminating the RTSJ runtime checks using a static type system can significantly decrease the execution time of real-time programs. Expand
Efficient detection of all pointer and array access errors
TLDR
This work presents a pointer and array access checking technique that provides complete error coverage through a simple set of program transformations, and is the first technique that detects all spatial and temporal access errors. Expand
Ensuring code safety without runtime checks for real-time control systems
TLDR
A language called Control-C is proposed that is essentially a subset of C, but with key restrictions designed to ensure that memory safety of code can be verified entirely by static checking, under certain system assumptions. Expand
Region-based Memory Management
TLDR
A region-based dynamic semantics for a skeletal programming language extracted from Standard ML is defined and the inference system which specifies where regions can be allocated and de-allocated is presented and a detailed proof that the system is sound with respect to a standard semantics is presented. Expand
CCured: type-safe retrofitting of legacy code
TLDR
This paper describes the CCured type system, which extends that of C by separating pointer types according to their usage, and presents a surprisingly simple type inference algorithm that is able to infer the appropriate pointer kinds for existing C programs. Expand
ABCD: eliminating array bounds checks on demand
TLDR
ABCD is a light-weight algorithm for elimination of Array Bounds Checks on Demand that can be applied to a set of frequently executed (hot) bounds checks, which makes it suitable for the dynamic-compilation setting, in which compile-time cost is constrained but hot statements are known. Expand
Region-based memory management in cyclone
TLDR
This paper focuses on the region-based memory management of Cyclone and its static typing discipline, and combines default annotations, local type inference, and a novel treatment of region effects to reduce this burden. Expand
A region inference algorithm
TLDR
It is proved that the algorithm is sound with respect to the region inference rules and that it always terminates even though the area inference rules permit polymorphic recursion in regions. Expand
Memory management with explicit regions
TLDR
It is shown that on a suite of allocation-intensive C programs, regions are competitive with malloc/free and sometimes substantially faster and that regions support safe memory management with low overhead. Expand
...
1
2
3
...