TY - GEN
T1 - Backwards-compatible array bounds checking for C with very low overhead
AU - Dhurjati, Dinakar
AU - Adve, Vikram
N1 - Copyright:
Copyright 2020 Elsevier B.V., All rights reserved.
PY - 2006
Y1 - 2006
N2 - The problem of enforcing correct usage of array and pointer references in C and C++ programs remains unsolved. The approach proposed by Jones and Kelly (extended by Ruwase and Lam) is the only one we know of that does not require significant manual changes to programs, but it has extremely high overheads of 5x-6x and 11x-12x in the two versions. In this paper, we describe a collection of techniques that dramatically reduce the overhead of this approach, by exploiting a fine-grain partitioning of memory called Automatic Pool Allocation. Together, these techniques bring the average overhead checks down to only 12% for a set of benchmarks (but 69% for one case). We show that the memory partitioning is key to bringing down this overhead. We also show that our technique successfully detects all buffer overrun violations in a test suite modeling reported violations in some important real-world programs.
AB - The problem of enforcing correct usage of array and pointer references in C and C++ programs remains unsolved. The approach proposed by Jones and Kelly (extended by Ruwase and Lam) is the only one we know of that does not require significant manual changes to programs, but it has extremely high overheads of 5x-6x and 11x-12x in the two versions. In this paper, we describe a collection of techniques that dramatically reduce the overhead of this approach, by exploiting a fine-grain partitioning of memory called Automatic Pool Allocation. Together, these techniques bring the average overhead checks down to only 12% for a set of benchmarks (but 69% for one case). We show that the memory partitioning is key to bringing down this overhead. We also show that our technique successfully detects all buffer overrun violations in a test suite modeling reported violations in some important real-world programs.
KW - Array bounds checking
KW - Automatic pool allocation
KW - Compilers
KW - Programming languages
KW - Region management
UR - http://www.scopus.com/inward/record.url?scp=34247170052&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=34247170052&partnerID=8YFLogxK
U2 - 10.1145/1134285.1134309
DO - 10.1145/1134285.1134309
M3 - Conference contribution
AN - SCOPUS:34247170052
SN - 1595933751
SN - 9781595933751
T3 - Proceedings - International Conference on Software Engineering
SP - 162
EP - 171
BT - Proceeding of the 28th International Conference on Software Engineering 2006, ICSE '06
PB - IEEE Computer Society
T2 - 28th International Conference on Software Engineering 2006, ICSE '06
Y2 - 20 May 2006 through 28 May 2006
ER -