Skip to content

Latest commit

 

History

History
123 lines (92 loc) · 3.5 KB

README.adoc

File metadata and controls

123 lines (92 loc) · 3.5 KB

Finding Concurrency Bugs in Production

Author: Marvin Strangfeld <marvin.strangfeld[at]rwth-aachen.de>

Outline

  1. Introduction

    1. Heisenbugs

    2. The Go Programming Language

    3. Table of Contents

  2. Taxonomy of Concurrency Bugs

    1. Deadlocks

    2. Data Races

    3. Atomicity and Order Violations

  3. Dynamic Code Analysis

  4. Concurrency-Aware Testing

  5. Static Code Analysis

  6. Conclusion

Papers

Title Bibtex PDF

Isolating Failure-Inducing Thread Schedules

acm2002

papers/acm2002.pdf

Sparse Record and Replay with Controlled Scheduling

lidbury2019sparse

papers/lidbury2019sparse.pdf

Engineering Record And Replay For Deployability

o2017engineering

papers/o2017engineering.pdf

Testing and Debugging Concurrency Bugs in Event-Driven Programs

tchamgoue2012testing

papers/tchamgoue2012testing.pdf

Finding concurrency bugs with context-aware communication graphs

lucia2009concurrency

papers/lucia2009concurrency.pdf

ConSeq: Detecting Concurrency Bugs through Sequential Errors

zhan2011conseq

papers/zhan2011conseq.pdf

MUVI: Automatically Inferring Multi-Variable Access Correlations and Detecting Related Semantic and Concurrency Bugs

lu2007muvi

papers/lu2007muvi.pdf

Understanding Real-World Concurrency Bugs in Go

tu2019go

papers/tu2019go.pdf

Instrumenting Where It Hurts: An Automatic Concurrent Debugging Technique

tzoref2007instrumenting

papers/tzoref2007instrumenting.pdf

Learning from Mistakes: A Comprehensive Study on Real World Concurrency Bug Characteristics

lu2008mistakes

papers/lu2008mistakes.pdf

ThreadSanitizer – data race detection in practice

serebry2009threadsanitizer

papers/serebry2009threadsanatizer.pdf

Beautiful concurrency

peytonjones2007beautiful

papers/peytonjones2007beautiful.pdf

KISS: keep it simple and sequential

qadeer2004kiss

papers/qadeer2004kiss.pdf

Finding and Reproducing Heisenbugs in Concurrent Programs

musuvathi2008finding

papers/musuvathi2008finding.pdf

Why do computers stop and what can be done about it?

gray1986computers

papers/gray1986computers.pdf

Static Deadlock Detection for Concurrent Go by Global Session Graph Synthesis

ng2016static

papers/ng2016static.pdf

Fencing off Go: Liveness and Safety for Channel-based Programming

lange2017fencing

papers/lange2017fencing.pdf

A Static Verification Framework for Message Passing in Go Using Behavioural Types

lange2018verification

papers/lange2018verification.pdf

Dynamic Race Detection with LLVM Compiler

serebry2011llvm

papers/serebry2011llvm.pdf

Quotes

  • "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

License

Copyright © 2020 Marvin Strangfeld

Paper licensed under Creative Commons Attribution 4.0 International