Chapter 4. Go Race Detector
The Go toolset includes the Go race detector. The race detector is a feature of the Go standard library. The race detector must be enabled at compile time and is used at runtime.
4.1. Installing the Race Detector
Red Hat Enterprise Linux 8 go-toolset module contains Go race detector. If you are on Red Hat Enterprise Linux 8, skip this step.
In the Go toolset, the race detector is provided by the go-toolset-1.12.12-golang-race package. To install the race detector:
# yum install go-toolset-1.12.12-golang-race
This command installs a variant of the Go standard library with the runtime race detection.
4.2. Using the Race Detector
To use the runtime race detector in a Go project, add the
-race option to the go tool commands used when manipulating the project.
For a minimal approach to using the race detector, build the project with the
For Red Hat Enterprise Linux 7:
$ scl enable go-toolset-1.12.12 'go build -race -o output_file go_main_package'
For Red Hat Enterprise Linux 8:
$ go build -race -o output_file go_main_package
Run the resulting executable binary file, and the race detector prints warnings to the standard output when a race is detected.
The race detector has a significant runtime resource overhead.
4.3. Additional Resources
A detailed description of the Go race detector and its features is beyond the scope of this book. For more information, see the resources listed below.
- Data Race Detector — Official documentation of the Go race detector.
- Chapter 1, Go — An overview of Go and more information on how to install it on your system.