Christopher Lidbury

dblp:163/3148 · DBLP profile ↗
← Back
3ranked-venue papers
3as first author
0since 2021 · last 2019
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 3 · 3 first-author

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
3 papers
Concurrent programming · 54% Software testing · 22% Debugging and program repair · 15%

Topics — the 11 heaviest of 12, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bug detection
0.412019
Sparse record and replay with controlled scheduling · PLDI 2019
Debugging and program repair
record and replay
0.412019
Sparse record and replay with controlled scheduling · PLDI 2019
Concurrent programming › memory models › weak memory models
c11 memory model
0.312017
Dynamic race detection for C++11 · POPL 2017
Concurrent programming › concurrency bug detection › data race detection
dynamic race detection
0.312017
Dynamic race detection for C++11 · POPL 2017
Concurrent programming
memory models
0.312017
Dynamic race detection for C++11 · POPL 2017
Compilers and program optimization
compiler correctness
0.212015
Many-core compiler fuzzing · PLDI 2015
Software testing
compiler testing
0.212015
Many-core compiler fuzzing · PLDI 2015
Software testing › concurrency testing
controlled concurrency testing
0.112019
Sparse record and replay with controlled scheduling · PLDI 2019
Concurrent programming › concurrency bug detection
data race detection
0.112019
Sparse record and replay with controlled scheduling · PLDI 2019
Software testing
differential testing
0.112015
Many-core compiler fuzzing · PLDI 2015
Software testing
fuzzing
0.112015
Many-core compiler fuzzing · PLDI 2015

Methods — techniques the papers use, named apart from their topics

dynamic analysis · 0.4controlled scheduling · 0.4threadsanitizer · 0.3instrumentation · 0.3axiomatic semantics · 0.3random differential testing · 0.2equivalence modulo inputs testing · 0.2
YearPublicationVenuePosition
2019 Sparse record and replay with controlled scheduling
abstract
Modern applications include many sources of nondeterminism, e.g. due to concurrency, signals, and system calls that interact with the external environment. Finding and reproducing bugs in the presence of this nondeterminism has been the subject of much prior work in three main areas: (1) controlled concurrency-testing, where a custom scheduler replaces the OS scheduler to find subtle bugs; (2) record and replay, where sources of nondeterminism are captured and logged so that a failing execution can be replayed for debugging purposes; and (3) dynamic analysis for the detection of data races. We present a dynamic analysis tool for C++ applications, tsan11rec, which brings these strands of work together by integrating controlled concurrency testing and record and replay into the tsan11 framework for C++11 data race detection. Our novel twist on record and replay is a sparse approach, where the sources of nondeterminism to record can be configured per application. We show that our approach is effective at finding subtle concurrency bugs in small applications; is competitive in terms of performance with the state-of-the-art record and replay tool rr on larger applications; succeeds (due to our sparse approach) in replaying the I/O-intensive Zandronum and QuakeSpasm video games, which are out of scope for rr; but (due to limitations of our sparse approach) cannot faithfully replay applications where memory layout nondeterminism significantly affects application behaviour.
Christopher Lidbury, Alastair F. Donaldson
PLDI1
2017 Dynamic race detection for C++11
abstract
The intricate rules for memory ordering and synchronisation associated with the C/C++11 memory model mean that data races can be difficult to eliminate from concurrent programs. Dynamic data race analysis can pinpoint races in large and complex applications, but the state-of-the-art ThreadSanitizer (tsan) tool for C/C++ considers only sequentially consistent program executions, and does not correctly model synchronisation between C/C++11 atomic operations. We present a scalable dynamic data race analysis for C/C++11 that correctly captures C/C++11 synchronisation, and uses instrumentation to support exploration of a class of non sequentially consistent executions. We concisely define the memory model fragment captured by our instrumentation via a restricted axiomatic semantics, and show that the axiomatic semantics permits exactly those executions explored by our instrumentation. We have implemented our analysis in tsan, and evaluate its effectiveness on benchmark programs, enabling a comparison with the CDSChecker tool, and on two large and highly concurrent applications: the Firefox and Chromium web browsers. Our results show that our method can detect races that are beyond the scope of the original tsan tool, and that the overhead associated with applying our enhanced instrumentation to large applications is tolerable.
Christopher Lidbury, Alastair F. Donaldson
POPL1
2015 Many-core compiler fuzzing
abstract
We address the compiler correctness problem for many-core systems through novel applications of fuzz testing to OpenCL compilers. Focusing on two methods from prior work, random differential testing and testing via equivalence modulo inputs (EMI), we present several strategies for random generation of deterministic, communicating OpenCL kernels, and an injection mechanism that allows EMI testing to be applied to kernels that otherwise exhibit little or no dynamically-dead code. We use these methods to conduct a large, controlled testing campaign with respect to 21 OpenCL (device, compiler) configurations, covering a range of CPU, GPU, accelerator, FPGA and emulator implementations. Our study provides independent validation of claims in prior work related to the effectiveness of random differential testing and EMI testing, proposes novel methods for lifting these techniques to the many-core setting and reveals a significant number of OpenCL compiler bugs in commercial implementations.
Christopher Lidbury, Andrei Lascu, Nathan Chong, Alastair F. Donaldson
PLDI1