Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Syst 2019
DOI: 10.1145/3297858.3304069
|View full text |Cite
|
Sign up to set email alerts
|

Understanding Real-World Concurrency Bugs in Go

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1

Citation Types

0
53
0

Year Published

2019
2019
2022
2022

Publication Types

Select...
4
3

Relationship

0
7

Authors

Journals

citations
Cited by 52 publications
(53 citation statements)
references
References 41 publications
0
53
0
Order By: Relevance
“…For this study, 12 out of 15 projects did not entirely stick to the Actor model, hinting that even for projects that embrace message passing, low-level concurrency primitives like locks (i.e., mutexes) still have their place. Tu et al [2019] came to a similar conclusion when studying 6 large and popular Go programs. A suitable solution for reasoning about message-passing programs should thus integrate with other programming and concurrency paradigms.…”
Section: Introductionmentioning
confidence: 56%
“…For this study, 12 out of 15 projects did not entirely stick to the Actor model, hinting that even for projects that embrace message passing, low-level concurrency primitives like locks (i.e., mutexes) still have their place. Tu et al [2019] came to a similar conclusion when studying 6 large and popular Go programs. A suitable solution for reasoning about message-passing programs should thus integrate with other programming and concurrency paradigms.…”
Section: Introductionmentioning
confidence: 56%
“…The data model and the programming model layered on top of it have a lot to say about what's easy to express, what's possible to express, and also what classes of developer mistakes are possible. See "Understanding real-world concurrency bugs in Go" for a recent discussion of these issues in the context of the design of the Go programming language [8] and Van Roy's "Programming paradigms for dummies" for a broader programming language survey [9]. Bloom [10] is a good example of the creative possibilities at the intersection of programming paradigms and data paradigms.…”
Section: Developer Experiencementioning
confidence: 99%
“…The idea is that, beyond their usage in distributed computing, channels can also serve as a programming abstraction for shared memory, supposedly less prone to concurrency bugs than locks, semaphores, and the like. However, in a recent study of 171 concurrency bugs in popular open source Go programs [48], Tu et al found that "message passing does not necessarily make multi-threaded programs less error-prone than shared memory. "…”
Section: Introductionmentioning
confidence: 99%
“…Safety means "bad" channel actions never occur: if a send, receive, or close happens in the implementation, then it is allowed by the protocol in the specification. For instance, typical protocols rule out common message-passing concurrency bugs [48], such as sends without receives, receives without sends, and type mismatches (actual type sent = expected type received). Essentially, thus, we face a classical verification problem, with classical ingredients: an implementation language I, a specification language S, and an inclusion relation .…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation