Program Reconditioning: Avoiding Undefined Behaviour When Finding and(…)
summary
Introduces reconditioning: generate potentially unsafe GPU programs, then apply a source-to-source reconditioner just before compilation so reduction never exposes undefined behaviour. Tools built are GLSLsmith and WGSLsmith for GLSL and WGSL, with concrete tactics like wrapping divisions, clamping array indices, determinizing floating-point evaluation, and initializing variables. Large campaign finds 24 bugs in GLSL and 33 bugs in WGSL. Does not handle concurrency and reconditioning can change behaviour when original code relied on UB.
AI-written summary · about
chapters (8)
- 0:00Introduction
- 1:50Compilation bugs and differential testing
- 3:58Program reduction challenges
- 5:21Undefined behavior in reduced programs
- 7:28Reconditioning for compiler testing
- 10:38Contributions and applications
- 12:42Limitations and future work
- 13:06Q&A
related talks
49mUndefined Behavior in 2017 (part 1 of 2)
53mLocknote: How Badly Do We Want Correct Compilers?
20mSemantic Reification: A New Paradigm for Random Program Generation
54mUndefined Behaviour is awesome!
18mUniformity Analysis in the WebGPU Shading Language
14mSynchronized Behavior Checking: A Method for Finding Missed Compiler Optimizations
46m“My Little Optimizer: Undefined Behavior is Magic"
21mDivergence-Aware Testing of Graphics Shader Compiler Back-Ends
