Ready, set, Go! Data-race detection and the Go language
This addresses data-race detection for programmers using Go or similar languages, but it is incremental as it adapts existing concepts to a specific synchronization model.
The paper tackles the problem of data-race detection in a language using channel communication as the only synchronization primitive, and it develops a semantics based on the happens-before relation to forge vector clocks for this purpose.
Data races are often discussed in the context of lock acquisition and release, with race-detection algorithms routinely relying on vector clocks as a means of capturing the relative ordering of events from different threads. In this paper, we present a data-race detector for a language with channel communication as its sole synchronization primitive, and provide a semantics directly tied to the happens-before relation, thus forging the notion of vector clocks.