Dissertation/Thesis Abstract

Random testing of open source C compilers
by Yang, Xuejun, Ph.D., The University of Utah, 2015, 145; 3704288
Abstract (Summary)

Compilers are indispensable tools to developers. We expect them to be correct. However, compiler correctness is very hard to be reasoned about. This can be partly explained by the daunting complexity of compilers.

In this dissertation, I will explain how we constructed a random program generator, Csmith, and used it to find hundreds of bugs in strong open source compilers such as the GNU Compiler Collection (GCC) and the LLVM Compiler Infrastructure (LLVM). The success of Csmith depends on its ability of being expressive and unambiguous at the same time. Csmith is composed of a code generator and a GTAV (Generation-Time Analysis and Validation) engine. They work interactively to produce expressive yet unambiguous random programs. The expressiveness of Csmith is attributed to the code generator, while the unambiguity is assured by GTAV. GTAV performs program analyses, such as points-to analysis and effect analysis, efficiently to avoid ambiguities caused by undefined behaviors or unspecified behaviors.

During our 4.25 years of testing, Csmith has found over 450 bugs in the GNU Compiler Collection (GCC) and the LLVM Compiler Infrastructure (LLVM). We analyzed the bugs by putting them into different categories, studying the root causes, finding their locations in compilers' source code, and evaluating their importance. We believe analysis results are useful to future random testers, as well as compiler writers/users.

Indexing (document details)
Advisor: Regehr, John
Commitee: Eide, Eric, Flatt, Matthew, Gopalakrishnan, Ganesh, Lattner, Chris
School: The University of Utah
Department: School of Computing
School Location: United States -- Utah
Source: DAI-B 76/10(E), Dissertation Abstracts International
Source Type: DISSERTATION
Subjects: Computer Engineering, Computer science
Keywords: Compiler bugs, Compilers, Csmith, GNU Compiler Collection, Llvm compiler infrastructure, Random testing
Publication Number: 3704288
ISBN: 9781321765892
Copyright © 2019 ProQuest LLC. All rights reserved. Terms and Conditions Privacy Policy Cookie Policy
ProQuest