Lightweight runtime checking of C programs with RTC
- Univ. of Alabama at Birmingham, Birmingham, AL (United States)
- Matlab (United States)
- North Carolina State Univ., Raleigh, NC (United States)
- Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
The C Programming Language is known for being an efficient language that can be compiled on almost any architecture and operating system. However the absence of dynamic safety checks and a relatively weak type system allows programmer oversights that are hard to spot. In this paper, we present RTC, a runtime monitoring tool that instruments unsafe code and monitors the program execution. RTC is built on top of the ROSE compiler infrastructure. RTC finds memory bugs and arithmetic overflows and underflows, and run-time type violations. Most of the instrumentations are directly added to the source file and only require a minimal runtime system. As a result, the instrumented code remains portable. In tests against known error detection benchmarks, RTC found 98% of all memory related bugs and had zero false positives. Finally, in performance tests conducted with well known algorithms, such as binary search and MD5, we determined that our tool has an average run-time overhead rate of 9.7× and memory overhead rate of 3.5×.
- Research Organization:
- Lawrence Livermore National Laboratory (LLNL), Livermore, CA (United States)
- Sponsoring Organization:
- USDOE National Nuclear Security Administration (NNSA)
- Grant/Contract Number:
- AC52-07NA27344
- OSTI ID:
- 1477830
- Report Number(s):
- LLNL-JRNL-748157; 933309
- Journal Information:
- Computer Languages, Systems & Structures, Vol. 45, Issue C; ISSN 1477-8424
- Publisher:
- ElsevierCopyright Statement
- Country of Publication:
- United States
- Language:
- English
Web of Science
Efficient detection of all pointer and array access errors
|
journal | June 1994 |
NDSeq
|
conference | June 2011 |
Run-Time Type Checking for Binary Programs
|
book | January 2003 |
Flexible Hardware Acceleration for Instruction-Grain Program Monitoring
|
conference | June 2008 |
Common specification language for static and dynamic analysis of C programs
|
conference | March 2013 |
Hardbound
|
conference | March 2008 |
Butterfly analysis
|
conference | March 2010 |
On the probability distribution of faults in complex software systems
|
journal | February 2015 |
Memory-safe Execution of C on a Java VM
|
conference | July 2015 |
Fast as a shadow, expressive as a tree
|
conference | April 2015 |
Runtime Verification with Particle Filtering
|
book | January 2013 |
An Optimized Memory Monitoring for Runtime Assertion Checking of C Programs
|
book | January 2013 |
Predator
|
conference | February 2014 |
The Importance of Run-Time Error Detection
|
book | January 2010 |
Accelerating Data Race Detection Utilizing On-Chip Data-Parallel Cores
|
book | January 2013 |
SigRace
|
conference | June 2009 |
WatchdogLite
|
conference | February 2014 |
SoftBound
|
conference | June 2009 |
CCured: type-safe retrofitting of legacy software
|
journal | May 2005 |
How to shadow every byte of memory used by a program
|
conference | June 2007 |
Valgrind: a framework for heavyweight dynamic binary instrumentation
|
journal | June 2007 |
CDSchecker
|
journal | October 2013 |
Array bounds check elimination in the context of deoptimization
|
journal | March 2009 |
An efficient and backwards-compatible transformation to ensure memory safety of C programs
|
journal | October 2004 |
Finding and understanding bugs in C compilers
|
conference | January 2011 |
ConSeq
|
conference | March 2011 |
A Taxonomy for Classifying Runtime Verification Tools
|
book | January 2018 |
Similar Records
Lightweight and Statistical Techniques for Petascale Debugging: Correctness on Petascale Systems (CoPS) Preliminry Report
Compiler and runtime support for structured and block structured applications