Go's race detector has a mutex blind spot
28 Jul, 2025
I recently read Ralf Jung's blog post "There is no memory safety without thread safety" which mentions that Go is not a memory safe language in the presence of data races.
"But Go comes with a built in data race detector1" some might say.
This reminded me of a quirk in Go's dynamic data race detection that causes it to miss data races in executed code that could easily be spotted by a human2.
Here is the code the data race detector struggles with:
package main
import (
"fmt"
"sync"
...
Read more at doublefree.dev