On macOS 12 a new malloc implementation (nano) is used by default, and apparently it reserves address range 0x600000000000-0x600020000000, which conflicts with the address range that TSAN uses for Go ( https://github.com/golang/go/issues/49138 ). Work around the issue by changing the address range slightly.
NOTE: on LLVM tip a new TSAN runtime (v3) has landed, which also makes the problem go away. But for Go 1.18 release, we may do something less massive. This change is not intended to be landed on LLVM tip, but rather a minimal change based on an old commit of LLVM (which Go currently uses) for Go 1.18.