Return-address protection in C/C++ code by dependability aspects
Vorschaubild nicht verfügbar
ISSN der Zeitschrift
INFORMATIK 2013 – Informatik angepasst an Mensch, Organisation und Umwelt
Regular Research Papers
Gesellschaft für Informatik e.V.
Due to shrinking structure sizes on memory chips, the probability of memory failures, such as spontaneous bit flips, is increasing. Especially in the domain of massproduced cheap embedded systems, hardware solutions are not affordable. Therefore, there is a need for cost-efficient software-based fault-tolerance mechanisms. In this paper we focus on such a mechanism for the protection of CPU stacks. A baseline assessment conducted with 21 benchmark and test programs shows that the stack is the most fault-susceptible data memory region - even more critical than the OS kernel's scheduler data structure, for instance. Our mechanism, which is based on profiling and a generic aspect-oriented implementation, supports detection and correction of bit flips in return addresses and frame pointers on the stack. It thereby reduces the number of stack-related program failures by 48.7 % and the number of all RAM-related failures by 13.3 % on the average over all benchmarks. The average code size overhead is 3.76 %, and a runtime overhead is only measurable for the subset of short-running benchmarks.