I filed https://github.com/golang/go/issues/74487 to track this.
On Monday, July 7, 2025 at 4:14:07 PM UTC+2 Jason E. Aten wrote: > Ugh. I don't know why groups removed all the newlines in that paste. Here > it is again with manually inserted newlines: > > jaten@rog /usr $ cd local/dev-go/go/ > jaten@rog /usr/local/dev-go/go (go1.25-goj) $ ls api CONTRIBUTING.md lib > PATENTS SECURITY.md VERSION bin doc LICENSE pkg src VERSION~ codereview.cfg > go.env misc README.md test > jaten@rog /usr/local/dev-go/go (go1.25-goj) $ cd .. > jaten@rog /usr/local/dev-go $ mkdir tmp > jaten@rog /usr/local/dev-go $ cd tmp > jaten@rog /usr/local/dev-go/tmp $ curl -L -o llvm.zip > https://github.com/llvm/llvm-project/archive/46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d.zip > % Total % Received % Xferd Average Speed Time Time Time Current Dload > Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 > 100 318M 0 318M 0 0 6697k 0 --:--:-- 0:00:48 --:--:-- 6865k > jaten@rog /usr/local/dev-go/tmp $ unzip -q llvm.zip > llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/* > jaten@rog /usr/local/dev-go/tmp $ ls > llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d llvm.zip > jaten@rog /usr/local/dev-go/tmp $ cd > llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/ > jaten@rog > /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d > $ cd compiler-rt/lib/tsan/go > jaten@rog > /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go > > $ ls > build.bat buildgo.sh test.c tsan_go.cpp > jaten@rog > /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go > > $ ./buildgo.sh > In file included from ../rtl/tsan_sync.h:19, > from ../rtl/tsan_rtl.h:47, > from tsan_go.cpp:13: > ../rtl/tsan_dense_alloc.h: In instantiation of ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Drain(Cache*) [with T = __tsan::MBlock; long unsigned int > kL1Size = 262144; long unsigned int kL2Size = 4096; long long unsigned int > kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: > ../rtl/tsan_dense_alloc.h:77:7: required from ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Free(Cache*, IndexT) [with T = __tsan::MBlock; long unsigned > int kL1Size = 262144; long unsigned int kL2Size = 4096; long long unsigned > int kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; IndexT = > unsigned int]’ > ../rtl/tsan_sync.cpp:84:26: required from here > ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around > arithmetic in operand of ‘|’ [ ]8;; > https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses > -Wparentheses ]8;; ] > 165 | xchg = head_idx | (cmp & kCounterMask) + kCounterInc; > | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ > ../rtl/tsan_dense_alloc.h: In instantiation of ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Drain(Cache*) [with T = __tsan::SyncVar; long unsigned int > kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int > kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: > ../rtl/tsan_dense_alloc.h:77:7: required from ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Free(Cache*, IndexT) [with T = __tsan::SyncVar; long > unsigned int kL1Size = 1048576; long unsigned int kL2Size = 1024; long long > unsigned int kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; > IndexT = unsigned int]’ > ../rtl/tsan_sync.cpp:92:25: required from here > ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around > arithmetic in operand of ‘|’ [ ]8;; > https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses > -Wparentheses ]8;; ] > cc1plus: note: unrecognized command-line option > ‘-Wno-unknown-warning-option’ may have been intended to silence earlier > diagnostics > gcc gotsan.cpp -c -o ./race_linux_amd64.syso -I../rtl -I../.. > -I../../sanitizer_common -I../../../include -std=c++17 -Wall > -fno-exceptions -fno-rtti -DSANITIZER_GO=1 > -DSANITIZER_DEADLOCK_DETECTOR_VERSION=2 -fPIC -Wno-maybe-uninitialized > -ffreestanding -Wno-unused-const-variable -Wno-unknown-warning-option -m64 > -msse3 -DSANITIZER_DEBUG=0 -O3 -fomit-frame-pointer > In file included from ../rtl/tsan_sync.h:19, from ../rtl/tsan_rtl.h:47, > from tsan_go.cpp:13: > ../rtl/tsan_dense_alloc.h: In instantiation of ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Drain(Cache*) [with T = __tsan::MBlock; long unsigned int > kL1Size = 262144; long unsigned int kL2Size = 4096; long long unsigned int > kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: > ../rtl/tsan_dense_alloc.h:77:7: required from ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Free(Cache*, IndexT) [with T = __tsan::MBlock; long unsigned > int kL1Size = 262144; long unsigned int kL2Size = 4096; long long unsigned > int kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; IndexT = > unsigned int]’ > ../rtl/tsan_sync.cpp:84:26: required from here > ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around > arithmetic in operand of ‘|’ [ ]8;; > https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses > -Wparentheses ]8;; ] > 165 | xchg = head_idx | (cmp & kCounterMask) + kCounterInc; > | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ > ../rtl/tsan_dense_alloc.h: In instantiation of ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Drain(Cache*) [with T = __tsan::SyncVar; long unsigned int > kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int > kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: > ../rtl/tsan_dense_alloc.h:77:7: required from ‘void > __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, > <anonymous> >::Free(Cache*, IndexT) [with T = __tsan::SyncVar; long > unsigned int kL1Size = 1048576; long unsigned int kL2Size = 1024; long long > unsigned int kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; > IndexT = unsigned int]’ > ../rtl/tsan_sync.cpp:92:25: required from here > ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around > arithmetic in operand of ‘|’ [ ]8;; > https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses > -Wparentheses ]8;; ] > cc1plus: note: unrecognized command-line option > ‘-Wno-unknown-warning-option’ may have been intended to silence earlier > diagnostics > ================== > WARNING: DATA RACE > Read at 0x00c011110000 by goroutine 2: > <null>() <null>:0 +0x0 Previous write at 0x00c011110000 by main goroutine: > <null>() <null>:0 +0x0 <null>() <null>:0 +0x0 Goroutine 2 (running) created > at: <null>() <null>:0 +0x0 > ================== > Found 1 data race(s) > jaten@rog > /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go > > $ > > On Monday, July 7, 2025 at 4:09:45 PM UTC+2 Jason E. Aten wrote: > >> Ah. I see that racebuild is just a thin wrapper around a shell script. >> Ok. So I tried to >> execute that shell script manually. I find a race in that build of the >> race detector... full irony! >> >> jaten@rog /usr $ cd local/dev-go/go/ jaten@rog /usr/local/dev-go/go >> (go1.25-goj) $ ls api CONTRIBUTING.md lib PATENTS SECURITY.md VERSION bin >> doc LICENSE pkg src VERSION~ codereview.cfg go.env misc README.md test >> jaten@rog /usr/local/dev-go/go (go1.25-goj) $ cd .. jaten@rog >> /usr/local/dev-go $ mkdir tmp jaten@rog /usr/local/dev-go $ cd tmp >> jaten@rog /usr/local/dev-go/tmp $ curl -L -o llvm.zip >> https://github.com/llvm/llvm-project/archive/46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d.zip >> >> % Total % Received % Xferd Average Speed Time Time Time Current Dload >> Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 >> 100 318M 0 318M 0 0 6697k 0 --:--:-- 0:00:48 --:--:-- 6865k jaten@rog >> /usr/local/dev-go/tmp $ unzip -q llvm.zip >> llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/* >> jaten@rog /usr/local/dev-go/tmp $ ls >> llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d llvm.zip jaten@rog >> /usr/local/dev-go/tmp $ cd >> llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/ jaten@rog >> /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d >> $ cd compiler-rt/lib/tsan/go jaten@rog >> /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go >> >> $ ls build.bat buildgo.sh test.c tsan_go.cpp jaten@rog >> /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go >> >> $ ./buildgo.sh In file included from ../rtl/tsan_sync.h:19, from >> ../rtl/tsan_rtl.h:47, from tsan_go.cpp:13: ../rtl/tsan_dense_alloc.h: In >> instantiation of ‘void __tsan::DenseSlabAlloc< <template-parameter-1-1>, >> <anonymous>, <anonymous>, <anonymous> >::Drain(Cache*) [with T = >> __tsan::MBlock; long unsigned int kL1Size = 262144; long unsigned int >> kL2Size = 4096; long long unsigned int kReserved = 3221225472; Cache = >> __tsan::DenseSlabAllocCache]’: ../rtl/tsan_dense_alloc.h:77:7: required >> from ‘void __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, >> <anonymous>, <anonymous> >::Free(Cache*, IndexT) [with T = __tsan::MBlock; >> long unsigned int kL1Size = 262144; long unsigned int kL2Size = 4096; long >> long unsigned int kReserved = 3221225472; Cache = >> __tsan::DenseSlabAllocCache; IndexT = unsigned int]’ >> ../rtl/tsan_sync.cpp:84:26: required from here >> ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around >> arithmetic in operand of ‘|’ [ ]8;; >> https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses >> -Wparentheses ]8;; ] 165 | xchg = head_idx | (cmp & kCounterMask) + >> kCounterInc; | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ >> ../rtl/tsan_dense_alloc.h: In instantiation of ‘void >> __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, >> <anonymous> >::Drain(Cache*) [with T = __tsan::SyncVar; long unsigned int >> kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: >> ../rtl/tsan_dense_alloc.h:77:7: required from ‘void __tsan::DenseSlabAlloc< >> <template-parameter-1-1>, <anonymous>, <anonymous>, <anonymous> >> >::Free(Cache*, IndexT) [with T = __tsan::SyncVar; long unsigned int >> kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; IndexT = >> unsigned int]’ ../rtl/tsan_sync.cpp:92:25: required from here >> ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around >> arithmetic in operand of ‘|’ [ ]8;; >> https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses >> -Wparentheses ]8;; ] cc1plus: note: unrecognized command-line option >> ‘-Wno-unknown-warning-option’ may have been intended to silence earlier >> diagnostics gcc gotsan.cpp -c -o ./race_linux_amd64.syso -I../rtl -I../.. >> -I../../sanitizer_common -I../../../include -std=c++17 -Wall >> -fno-exceptions -fno-rtti -DSANITIZER_GO=1 >> -DSANITIZER_DEADLOCK_DETECTOR_VERSION=2 -fPIC -Wno-maybe-uninitialized >> -ffreestanding -Wno-unused-const-variable -Wno-unknown-warning-option -m64 >> -msse3 -DSANITIZER_DEBUG=0 -O3 -fomit-frame-pointer In file included from >> ../rtl/tsan_sync.h:19, from ../rtl/tsan_rtl.h:47, from tsan_go.cpp:13: >> ../rtl/tsan_dense_alloc.h: In instantiation of ‘void >> __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, >> <anonymous> >::Drain(Cache*) [with T = __tsan::MBlock; long unsigned int >> kL1Size = 262144; long unsigned int kL2Size = 4096; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: >> ../rtl/tsan_dense_alloc.h:77:7: required from ‘void __tsan::DenseSlabAlloc< >> <template-parameter-1-1>, <anonymous>, <anonymous>, <anonymous> >> >::Free(Cache*, IndexT) [with T = __tsan::MBlock; long unsigned int kL1Size >> = 262144; long unsigned int kL2Size = 4096; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; IndexT = >> unsigned int]’ ../rtl/tsan_sync.cpp:84:26: required from here >> ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around >> arithmetic in operand of ‘|’ [ ]8;; >> https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses >> -Wparentheses ]8;; ] 165 | xchg = head_idx | (cmp & kCounterMask) + >> kCounterInc; | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ >> ../rtl/tsan_dense_alloc.h: In instantiation of ‘void >> __tsan::DenseSlabAlloc< <template-parameter-1-1>, <anonymous>, <anonymous>, >> <anonymous> >::Drain(Cache*) [with T = __tsan::SyncVar; long unsigned int >> kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache]’: >> ../rtl/tsan_dense_alloc.h:77:7: required from ‘void __tsan::DenseSlabAlloc< >> <template-parameter-1-1>, <anonymous>, <anonymous>, <anonymous> >> >::Free(Cache*, IndexT) [with T = __tsan::SyncVar; long unsigned int >> kL1Size = 1048576; long unsigned int kL2Size = 1024; long long unsigned int >> kReserved = 3221225472; Cache = __tsan::DenseSlabAllocCache; IndexT = >> unsigned int]’ ../rtl/tsan_sync.cpp:92:25: required from here >> ../rtl/tsan_dense_alloc.h:165:46: warning: suggest parentheses around >> arithmetic in operand of ‘|’ [ ]8;; >> https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wparentheses >> -Wparentheses ]8;; ] cc1plus: note: unrecognized command-line option >> ‘-Wno-unknown-warning-option’ may have been intended to silence earlier >> diagnostics ================== WARNING: DATA RACE Read at 0x00c011110000 by >> goroutine 2: <null>() <null>:0 +0x0 Previous write at 0x00c011110000 by >> main goroutine: <null>() <null>:0 +0x0 <null>() <null>:0 +0x0 Goroutine 2 >> (running) created at: <null>() <null>:0 +0x0 ================== Found 1 >> data race(s) jaten@rog >> /usr/local/dev-go/tmp/llvm-project-46e3ec0244c4d75a57cd635a28a9d5cbaee67c3d/compiler-rt/lib/tsan/go >> >> $ >> >> On Monday, July 7, 2025 at 3:22:43 PM UTC+2 Jason E. Aten wrote: >> >>> I'm trying to characterize the race-detector/tsan corruption >>> bugs found in https://github.com/golang/go/issues/74019, >>> on the latest pre-release of go1.25 (at >>> b062eb46e8e76ad39029d0c1b13e4eb81c692c20 >>> which is tagged as "*release-branch.go1.25").* >>> >>> I tried to follow the Go src/runtime/race/README instructions >>> to update the race detector to the latest in the llvm repo, since it >>> is 20 months old, and maybe there have been fixes applied( probably >>> wishful thinking, but worth a quick try...), but I'm not having any luck >>> with "racebuild": >>> >>> *jaten@rog **/usr/local/dev-go/go/src/runtime/race **(go1.25-goj) **$* >>> *racebuild >>> -goroot /u**sr/local/dev-go/go -platforms darwin/amd64v1 -rev >>> 46e3ec0244c4d75a57cd635a28a9d5cb**aee67c3d* >>> >>> 2025/07/07 08:12:24 using Go revision: >>> b062eb46e8e76ad39029d0c1b13e4eb81c692c20 >>> >>> 2025/07/07 08:12:24 darwin/amd64v1: gomote [create -status=false >>> gotip-darwin-amd64_14] >>> >>> Please visit https://www.google.com/device in your browser and enter >>> verification code: >>> >>> XXX-XXX-XXXX >>> >>> # Error running create: failed to create buildlet (1): rpc error: code = >>> PermissionDenied desc = unexpected HTTP status code received from >>> server: 403 (Forbidden); transport: received unexpected content-type >>> "text/html; charset=UTF-8" >>> >>> 2025/07/07 08:13:34 darwin/amd64v1: gomote [create -status=false >>> gotip-darwin-amd64_14] failed: >>> >>> Please visit https://www.google.com/device in your browser and enter >>> verification code: >>> >>> XXX-XXX-XXXX >>> >>> # Error running create: failed to create buildlet (1): rpc error: code = >>> PermissionDenied desc = unexpected HTTP status code received from >>> server: 403 (Forbidden); transport: received unexpected content-type >>> "text/html; charset=UTF-8" >>> >>> 2025/07/07 08:13:34 darwin/amd64v1: instance creation failed, retrying >>> >>> 2025/07/07 08:13:34 darwin/amd64v1: gomote [create -status=false >>> gotip-darwin-amd64_14] >>> >>> # Error running create: failed to create buildlet (1): rpc error: code = >>> Permission\ >>> >>> Denied desc = unexpected HTTP status code received from server: 403 >>> (Forbidden); tr\ >>> >>> ansport: received unexpected content-type "text/html; charset=UTF-8" >>> >>> 2025/07/07 08:13:35 darwin/amd64v1: gomote [create -status=false >>> gotip-darwin-amd64_14] failed: >>> >>> # Error running create: failed to create buildlet (1): rpc error: code = >>> Permission\ >>> >>> Denied desc = unexpected HTTP status code received from server: 403 >>> (Forbidden); tr\ >>> >>> ansport: received unexpected content-type "text/html; charset=UTF-8" >>> >>> 2025/07/07 08:13:35 darwin/amd64v1: instance creation failed, retrying >>> >>> 2025/07/07 08:13:35 darwin/amd64v1: gomote [create -status=false >>> gotip-darwin-amd64_14] >>> >>> ... lots more of the same, after signing into my gmail... >>> >>> Is it possible to do this locally and not with the Go distributed build >>> system? >>> >>> Thanks! >>> >>> Jason >>> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/271aeef7-0e6d-4fbd-98be-6a7181f78951n%40googlegroups.com.