Automated testing of graphics shader compilers
File(s)oopsla_paper.pdf (5.87 MB)
Published version
Author(s)
Donaldson, AF
Evrard, H
Lascu, A
Thomson, P
Type
Conference Paper
Abstract
We present an automated technique for finding defects in compilers for graphics shading languages. key challenge in compiler testing is the lack of an oracle that classifies an output as correct or incorrect; this is particularly pertinent in graphics shader compilers where the output is a rendered image that is typically under-specified. Our method builds on recent successful techniques for compiler validation based on metamorphic testing, and leverages existing high-value graphics shaders to create sets of transformed shaders that should be semantically equivalent. Rendering mismatches are then indicative of shader compilation bugs. Deviant shaders are automatically minimized to identify, in each case, a minimal change to an original high-value shader that induces a shader compiler bug. We have implemented the approach as a tool, GLFuzz, targeting the OpenGL shading language, GLSL. Our experiments over a set of 17 GPU and driver configurations, spanning the main 7 GPU designers, have led to us finding and reporting more than 60 distinct bugs, covering all tested configurations. As well as defective rendering, these issues identify security-critical vulnerabilities that affect WebGL, including a significant remote information leak security bug where a malicious web page can capture the contents of other browser tabs, and a bug whereby visiting a malicious web page can lead to a ``blue screen of death'' under Windows 10. Our findings show that shader compiler defects are prevalent, and that metamorphic testing provides an effective means for detecting them automatically.
Date Issued
2017-10-12
Date Acceptance
2017-08-11
Citation
Proceedings of the ACM on Programming Languages, 2017, 1, pp.1-27
ISSN
2475-1421
Publisher
ACM
Start Page
1
End Page
27
Journal / Book Title
Proceedings of the ACM on Programming Languages
Volume
1
Copyright Statement
© ACM, 2017. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in Proceedings of the ACM on Programming Languages, {VOL# 1, 12 OCt 2017} http://doi.acm.org/10.1145/3133917
Source
Object-oriented Programming, Systems, Languages, and Applications (OOPSLA)
Publication Status
Published
Start Date
2017-10-22
Finish Date
2017-10-27
Coverage Spatial
Vancouver, Canada