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

Note

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.

See also

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 -race option:

  • 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.

Important

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.

Online documentation

See also

  • Chapter 1, Go — An overview of Go and more information on how to install it on your system.