Shadow Guarding: Run-Time Checking You Can Afford

Harish Patil, Charles Fischer · 1994

Shared memory multiprocessors are becoming increasingly common. We present a technique that uses shared memory multiprocessors to efficiently implement run-time checking. The user program pays a very small premium on each run. In return there is an assurance of reliability. A second "shadow" process looks for errors in the background. For the error-free runs, the user process hardly notices the shadow process; for erroneous runs, the shadow process provides useful error information automatically. 1 Introduction Run-time checks can detect errors that cannot be detected at compile-time, including array bound violations, invalid pointer accesses, and use of uninitialized variables. Extensive run-time checking provided by diagnostic compilers incurs significant run-time costs. In [Ste92], run-time checks were added to a C compiler. The code generated ran 10 times slower than the original code. Similar slowdowns are reported for commercially available run-time error checking systems such ...

Read the paper · More papers on PaperTik