@inbook{bde6c3d03a9140f8ae68f657c2cba99d,
title = "Discovering concurrency errors",
abstract = "Lots of concurrent software is being developed for the now ubiquitous multicore processors. And concurrent programming is difficult because it is quite easy to introduce errors that are really hard to diagnose and fix. One of the main obstacles to concurrent programming is that threads are scheduled nondeterministically and their interactions may become hard to predict and to devise. This chapter addresses the nature of concurrent programming and some classes of concurrency errors. It discusses the application of dynamic program analysis techniques to detect, locate and diagnose some common concurrency errors like data races, atomicity violations and deadlocks. This chapter also mentions some techniques that can help with quality assurance of concurrent programs, regardless of any particular class of concurrency errors, like noise injection and systematic testing, and it is closed by some prospects of concurrent software development.",
keywords = "Atomicity violations, Concurrency errors, Data races, Deadlocks, Dynamic analysis, Noise injection, Nondeterminism, Quality assurance, Software correctness",
author = "Louren{\c c}o, {Jo{\~a}o M.} and Jan Fiedor and Bohuslav K{\v r}ena and Tom{\'a}{\v s} Vojnar",
note = "This work was partially supported by the ARVI EU COST ACTION IC1402. Further, the Czech authors were supported by the EU ECSEL project Aquas, the internal BUT FIT project FIT-S-17-4014, and the IT4IXS project: IT4Innovations Excellence in Science (LQ1602). The Portuguese author was also supported by the Portuguese Science Foundation and NOVA LINCS (ref. UID/CEC/04516/2013).",
year = "2018",
doi = "10.1007/978-3-319-75632-5_2",
language = "English",
isbn = "978-3-319-75631-8",
series = "Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)",
publisher = "Springer",
pages = "34--60",
editor = "E. Bartocci and Y. Falcone",
booktitle = "Lectures on Runtime Verification",
address = "Netherlands",
}