Author: Marvin Strangfeld <marvin.strangfeld[at]rwth-aachen.de>
-
Introduction
-
Heisenbugs
-
The Go Programming Language
-
Table of Contents
-
-
Taxonomy of Concurrency Bugs
-
Deadlocks
-
Data Races
-
Atomicity and Order Violations
-
-
Dynamic Code Analysis
-
Concurrency-Aware Testing
-
Static Code Analysis
-
Conclusion
Title | Bibtex | |
---|---|---|
Isolating Failure-Inducing Thread Schedules |
acm2002 |
|
Sparse Record and Replay with Controlled Scheduling |
lidbury2019sparse |
|
Engineering Record And Replay For Deployability |
o2017engineering |
|
Testing and Debugging Concurrency Bugs in Event-Driven Programs |
tchamgoue2012testing |
|
Finding concurrency bugs with context-aware communication graphs |
lucia2009concurrency |
|
ConSeq: Detecting Concurrency Bugs through Sequential Errors |
zhan2011conseq |
|
MUVI: Automatically Inferring Multi-Variable Access Correlations and Detecting Related Semantic and Concurrency Bugs |
lu2007muvi |
|
Understanding Real-World Concurrency Bugs in Go |
tu2019go |
|
Instrumenting Where It Hurts: An Automatic Concurrent Debugging Technique |
tzoref2007instrumenting |
|
Learning from Mistakes: A Comprehensive Study on Real World Concurrency Bug Characteristics |
lu2008mistakes |
|
ThreadSanitizer – data race detection in practice |
serebry2009threadsanitizer |
|
Beautiful concurrency |
peytonjones2007beautiful |
|
KISS: keep it simple and sequential |
qadeer2004kiss |
|
Finding and Reproducing Heisenbugs in Concurrent Programs |
musuvathi2008finding |
|
Why do computers stop and what can be done about it? |
gray1986computers |
|
Static Deadlock Detection for Concurrent Go by Global Session Graph Synthesis |
ng2016static |
|
Fencing off Go: Liveness and Safety for Channel-based Programming |
lange2017fencing |
|
A Static Verification Framework for Message Passing in Go Using Behavioural Types |
lange2018verification |
|
Dynamic Race Detection with LLVM Compiler |
serebry2011llvm |
-
"If debugging is the process of removing software bugs, then programming must be the process of putting them in." ~ Edsger W. Dijkstra
-
"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?" ~ Brian Kernighan
-
"The most effective debugging tool is still careful thought, coupled with judiciously placed print statements." ~ Brian Kernighan