A Differential Approach to Undefined Behavior Detection

Abstract

This article studies undefined behavior arising in systems programming languages such as C/C++. Undefined behavior bugs lead to unpredictable and subtle systems behavior, and their effects can be further amplified by compiler optimizations. Undefined behavior bugs are present in many systems, including the Linux kernel and the Postgres database. The consequences range from incorrect functionality to missing security checks. This article proposes a formal and practical approach that finds undefined behavior bugs by finding “unstable code” in terms of optimizations that leverage undefined behavior. Using this approach, we introduce a new static checker called S tack that precisely identifies undefined behavior bugs. Applying S tack to widely used systems has uncovered 161 new bugs that have been confirmed and fixed by developers.

Document Details

Document Type
Pub Defense Publication
Publication Date
Mar 11, 2015
Source ID
10.1145/2699678

Entities

People

  • Armando Solar-lezama
  • M. Frans Kaashoek
  • Nickolai Zeldovich
  • Xi Wang

Organizations

  • Defense Advanced Research Projects Agency
  • Massachusetts Institute of Technology
  • National Science Foundation

Tags

Fields of Study

  • Computer science

Readers

  • Database Systems and Applications
  • Parallel and Distributed Computing.
  • Theoretical Analysis.