recentpopularlog in

jabley : concurrency   167

« earlier  
Understanding Real-World Concurrency Bugs in Go
Go is a statically-typed programming language that aims
to provide a simple, efficient, and safe way to build multithreaded software. Since its creation in 2009, Go has matured and gained significant adoption in production and
open-source software. Go advocates for the usage of message passing as the means of inter-thread communication
and provides several new concurrency mechanisms and libraries to ease multi-threading programming. It is important
to understand the implication of these new proposals and the
comparison of message passing and shared memory synchronization in terms of program errors, or bugs. Unfortunately,
as far as we know, there has been no study on Go’s concurrency bugs.
In this paper, we perform the first systematic study on
concurrency bugs in real Go programs. We studied six popular Go software including Docker, Kubernetes, and gRPC.
We analyzed 171 concurrency bugs in total, with more than
half of them caused by non-traditional, Go-specific problems.
Apart from root causes of these bugs, we also studied their
fixes, performed experiments to reproduce them, and evaluated them with two publicly-available Go bug detectors.
Overall, our study provides a better understanding on Go’s
concurrency models and can guide future researchers and
practitioners in writing better, more reliable Go software
and in developing debugging and diagnosis tools for Go.
concurrency  go  bugs  golang  filetype:pdf  paper 
march 2019 by jabley
« earlier      
per page:    204080120160

Copy this bookmark:

to read