A system and language for building system-specific, static analyses

Seth Hallem, Benjamin Chelf, Yichen Xie, Dawson Engler

2002 · 350 citations · 15 references

Concepts

TL;DR

The paper introduces a flexible extension language and efficient algorithm to enable rapid discovery of serious bugs in software. The system, xgcc, implements this language (metal) and performs context‑sensitive, interprocedural analysis to execute the specified bug‑finding rules efficiently. In prior work, the approach discovered thousands of bugs in real systems code, demonstrating its effectiveness as a framework for quickly deploying new bug‑finding analyses.

Abstract

This paper presents a novel approach to bug-finding analysis and an implementation of that approach. Our goal is to find as many serious bugs as possible. To do so, we designed a flexible, easy-to-use extension language for specifying analyses and an efficent algorithm for executing these extensions. The language, metal, allows the users of our system to specify a broad class of analyses in terms that resemble the intuitive description of the rules that they check. The system, xgcc, executes these analyses efficiently using a context-sensitive, interprocedural analysis. Our prior work has shown that the approach described in this paper is effective: it has successfully found thousands of bugs in real systems code. This paper describes the underlying system used to achieve these results. We believe that our system is an effective framework for deploying new bug-finding analyses quickly and easily.

References

15