Demo Data from VLDB 2026 / reviewers in the wild / expert
Paul Thomson
dblp:120/2177
· DBLP profile ↗
9ranked-venue papers
2as first author
1since 2021 · last 2021
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 6 · 1 since 2021Systems, architecture and hardware · 3 · 2 first-authorDatabases, data management, data science and information retrieval · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
8 papers |
Software testing · 42% Concurrent programming · 24% Program verification · 12% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Storage systems · 100% |
Topics — the 20 heaviest of 22, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
compiler testing |
0.8 | 2 | 2021 | Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021 Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017 |
Software testing › concurrency testing
systematic concurrency testing |
0.6 | 3 | 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015 Asynchronous programming, analysis and testing with state machines · PLDI 2015 Concurrency testing using schedule bounding: an empirical study · PPoPP 2014 |
Debugging and program repair › automated debugging
delta debugging |
0.5 | 1 | 2021 | Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021 |
Software testing › test optimization
test case reduction |
0.5 | 1 | 2021 | Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021 |
Concurrent programming
concurrency bugs |
0.4 | 2 | 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015 Concurrency testing using schedule bounding: an empirical study · PPoPP 2014 |
Program verification › code-level verification
GPU kernel verification |
0.4 | 2 | 2015 | The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 GPUVerify: a verifier for GPU kernels · OOPSLA 2012 |
Software testing
metamorphic testing |
0.3 | 1 | 2017 | Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017 |
Software testing › compiler testing
shader compiler testing |
0.3 | 1 | 2017 | Automated testing of graphics shader compilers · Proc. ACM Program. Lang. 2017 |
Storage systems
distributed storage |
0.2 | 1 | 2016 | Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!) · FAST 2016 |
Concurrent programming › concurrency models
asynchronous programming |
0.2 | 1 | 2015 | Asynchronous programming, analysis and testing with state machines · PLDI 2015 |
Concurrent programming › concurrency bug detection
data race detection |
0.2 | 1 | 2015 | The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 |
Concurrent programming › memory models
happens-before relation |
0.2 | 1 | 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015 |
Concurrent programming
memory models |
0.2 | 1 | 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.2 | 1 | 2015 | The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 |
Program verification › model checking
partial order reduction |
0.2 | 1 | 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testing · PPoPP 2015 |
Program analysis › concurrent program analysis
static race detection |
0.2 | 1 | 2015 | Asynchronous programming, analysis and testing with state machines · PLDI 2015 |
Concurrent programming
concurrency bug detection |
0.2 | 1 | 2014 | Concurrency testing using schedule bounding: an empirical study · PPoPP 2014 |
Compilers and program optimization
intermediate representation |
0.1 | 1 | 2021 | Test-case reduction and deduplication almost for free with transformation-based compiler testing · PLDI 2021 |
Program analysis › static analysis
bug detection |
0.1 | 1 | 2016 | Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!) · FAST 2016 |
Empirical software engineering › software engineering research methodology
empirical study |
0.1 | 1 | 2014 | Concurrency testing using schedule bounding: an empirical study · PPoPP 2014 |
Methods — techniques the papers use, named apart from their topics
semantics-preserving transformation · 0.5deduplication · 0.5loop invariant inference · 0.4test case minimization · 0.3metamorphic testing · 0.3theorem proving · 0.2lazy happens-before relation · 0.2domain-specific language design · 0.2preemption bounding · 0.2delay bounding · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Test-case reduction and deduplication almost for free with transformation-based compiler testingabstractRecent transformation-based approaches to compiler testing look for mismatches between the results of pairs of equivalent programs, where one program is derived from the other by randomly applying semantics-preserving transformations. We present a formulation of transformation-based compiler testing that provides effective test-case reduction almost for free: if transformations are designed to be as small and independent as possible, standard delta debugging can be used to shrink a bug-inducing transformation sequence to a smaller subsequence that still triggers the bug. The bug can then be reported as a delta between an original and minimally-transformed program. Minimized transformation sequences can also be used to heuristically deduplicate a set of bug-inducing tests, recommending manual investigation of those that involve disparate types of transformations and thus may have different root causes. We demonstrate the effectiveness of our approach via a new tool, spirv-fuzz, the first compiler-testing tool for the SPIR-V intermediate representation that underpins the Vulkan GPU programming model. Alastair F. Donaldson, Paul Thomson, Vasyl Teliman, Stefano Milizia, André Perez Maselco, Antoni Karpinski |
PLDI | 2 |
| 2020 | Putting Randomized Compiler Testing into Production (Experience Report)abstractWe describe our experience over the last 18 months on a compiler testing technology transfer project: taking the GraphicsFuzz research project on randomized metamorphic testing of graphics shader compilers, and building the necessary tooling around it to provide a highly automated process for improving the Khronos Vulkan Conformance Test Suite (CTS) with test cases that expose fuzzer-found compiler bugs, or that plug gaps in test coverage. We present this tooling for test automation - gfauto - in detail, as well as our use of differential coverage and test case reduction as a method for automatically synthesizing tests that fill coverage gaps. We explain the value that GraphicsFuzz has provided in automatically testing the ecosystem of tools for transforming, optimizing and validating Vulkan shaders, and the challenges faced when testing a tool ecosystem rather than a single tool. We discuss practical issues associated with putting automated metamorphic testing into production, related to test case validity, bug de-duplication and floating-point precision, and provide illustrative examples of bugs found during our work. Alastair F. Donaldson, Hugues Evrard, Paul Thomson |
ECOOP | 3 |
| 2017 | Automated testing of graphics shader compilersabstractWe 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. Alastair F. Donaldson, Hugues Evrard, Andrei Lascu, Paul Thomson |
Proc. ACM Program. Lang. | 4 |
| 2016 | Uncovering Bugs in Distributed Storage Systems during Testing (Not in Production!)
Pantazis Deligiannis, Matt McCutchen, Paul Thomson, Shuo Chen 0001, Alastair F. Donaldson, John Erickson, Akash Lal, Rashmi Mudduluru, Shaz Qadeer, Wolfram Schulte |
FAST | 3 |
| 2015 | Asynchronous programming, analysis and testing with state machinesabstractProgramming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these challenges in isolation, by either designing a new declarative language, a new data race detection tool or a new testing technique. We present P#, a language for high-reliability asynchronous programming co-designed with a static data race analysis and systematic concurrency testing infrastructure. We describe our experience using P# to write several distributed protocols and port an industrial-scale system internal to Microsoft, showing that the combined techniques, by leveraging the design of P#, are effective in finding bugs. Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema, Akash Lal, Paul Thomson |
PLDI | 5 |
| 2015 | The lazy happens-before relation: better partial-order reduction for systematic concurrency testingabstractWe present the lazy happens-before relation (lazy HBR), which ignores mutex-induced edges to provide a more precise notion of state equivalence compared with the traditional happens-before relation. We demonstrate experimentally that the lazy HBR has the potential to provide greater schedule reduction during systematic concurrency testing with respect to a set of 79 Java benchmarks. Paul Thomson, Alastair F. Donaldson |
PPoPP | 1 |
| 2015 | The Design and Implementation of a Verification Technique for GPU KernelsabstractWe present a technique for the formal verification of GPU kernels, addressing two classes of correctness properties: data races and barrier divergence. Our approach is founded on a novel formal operational semantics for GPU kernels termed synchronous, delayed visibility (SDV) semantics, which captures the execution of a GPU kernel by multiple groups of threads. The SDV semantics provides operational definitions for barrier divergence and for both inter- and intra-group data races. We build on the semantics to develop a method for reducing the task of verifying a massively parallel GPU kernel to that of verifying a sequential program. This completely avoids the need to reason about thread interleavings, and allows existing techniques for sequential program verification to be leveraged. We describe an efficient encoding of data race detection and propose a method for automatically inferring the loop invariants that are required for verification. We have implemented these techniques as a practical verification tool, GPUVerify, that can be applied directly to OpenCL and CUDA source code. We evaluate GPUVerify with respect to a set of 162 kernels drawn from public and commercial sources. Our evaluation demonstrates that GPUVerify is capable of efficient, automatic verification of a large number of real-world kernels. Adam Betts, Nathan Chong, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer, Paul Thomson, John Wickerson |
ACM Trans. Program. Lang. Syst. | 6 |
| 2014 | Concurrency testing using schedule bounding: an empirical studyabstractWe present the first independent empirical study on schedule bounding techniques for systematic concurrency testing (SCT). We have gathered 52 buggy concurrent software benchmarks, drawn from public code bases, which we call SCTBench. We applied a modified version of an existing concurrency testing tool to SCTBench to attempt to answer several research questions, including: How effective are the two main schedule bounding techniques, preemption bounding and delay bounding, at bug finding? What challenges are associated with applying SCT to existing code? How effective is schedule bounding compared to a naive random scheduler at finding bugs? Our findings confirm that delay bounding is superior to preemption bounding and that schedule bounding is more effective at finding bugs than unbounded depth-first search. The majority of bugs in SCTBench can be exposed using a small bound (1-3), supporting previous claims, but there is at least one benchmark that requires 5 preemptions. Surprisingly, we found that a naive random scheduler is at least as effective as schedule bounding for finding bugs. We have made SCTBench and our tools publicly available for reproducibility and use in future work. Paul Thomson, Alastair F. Donaldson, Adam Betts |
PPoPP | 1 |
| 2012 | GPUVerify: a verifier for GPU kernelsabstractWe present a technique for verifying race- and divergence-freedom of GPU kernels that are written in mainstream kernel programming languages such as OpenCL and CUDA. Our approach is founded on a novel formal operational semantics for GPU programming termed synchronous, delayed visibility (SDV) semantics. The SDV semantics provides a precise definition of barrier divergence in GPU kernels and allows kernel verification to be reduced to analysis of a sequential program, thereby completely avoiding the need to reason about thread interleavings, and allowing existing modular techniques for program verification to be leveraged. We describe an efficient encoding for data race detection and propose a method for automatically inferring loop invariants required for verification. We have implemented these techniques as a practical verification tool, GPUVerify, which can be applied directly to OpenCL and CUDA source code. We evaluate GPUVerify with respect to a set of 163 kernels drawn from public and commercial sources. Our evaluation demonstrates that GPUVerify is capable of efficient, automatic verification of a large number of real-world kernels. Adam Betts, Nathan Chong, Alastair F. Donaldson, Shaz Qadeer, Paul Thomson |
OOPSLA | 5 |