Go version

go version go1.26-devel_5a56d8848b Mon Aug 18 12:15:08 2025 -0700 linux/amd64

Output of go env in your module/workspace:

AR='ar'
CC='gcc'
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_ENABLED='1'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
CXX='g++'
GCCGO='gccgo'
GO111MODULE=''
GOAMD64='v1'
GOARCH='amd64'
GOAUTH='netrc'
GOBIN=''
GOCACHE='/usr/local/google/home/stapelberg/.cache/go-build'
GOCACHEPROG=''
GODEBUG=''
GOENV='/usr/local/google/home/stapelberg/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFIPS140='off'
GOFLAGS=''
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build3689765317=/tmp/go-build -gno-record-gcc-switches'
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMOD='/usr/local/google/home/stapelberg/x/exp/go.mod'
GOMODCACHE='/usr/local/google/home/stapelberg/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/usr/local/google/home/stapelberg/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/google/home/stapelberg/upstream-go'
GOSUMDB='sum.golang.org'
GOTELEMETRY='local'
GOTELEMETRYDIR='/usr/local/google/home/stapelberg/.config/go/telemetry'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/google/home/stapelberg/upstream-go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.26-devel_5a56d8848b Mon Aug 18 12:15:08 2025 -0700'
GOWORK=''
PKG_CONFIG='pkg-config'

What did you do?

I ran go test -v ./... in a clean checkout of the x/exp repository (git revision 42675adae3e697041d19b22cb15349e9c361f430).

What did you see happen?

=== RUN   TestHeap
--- PASS: TestHeap (0.00s)
=== RUN   TestPanicEvent
--- PASS: TestPanicEvent (0.00s)
=== RUN   TestQueue
--- PASS: TestQueue (0.00s)
=== RUN   TestFlightRecorderDoubleStart
panic: test timed out after 10m0s
    running tests:
        TestFlightRecorderDoubleStart (10m0s)

goroutine 17 [running]:
testing.(*M).startAlarm.func1()
    /home/stapelberg/upstream-go/src/testing/testing.go:2682 +0x34b
created by time.goFunc
    /home/stapelberg/upstream-go/src/time/sleep.go:215 +0x2d

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000007500, {0x65d43d?, 0xc0000b0b30?}, 0x66a3e8)
    /home/stapelberg/upstream-go/src/testing/testing.go:2005 +0x485
testing.runTests.func1(0xc000007500)
    /home/stapelberg/upstream-go/src/testing/testing.go:2477 +0x37
testing.tRunner(0xc000007500, 0xc0000b0c70)
    /home/stapelberg/upstream-go/src/testing/testing.go:1934 +0xea
testing.runTests(0xc0000100d8, {0x8188c0, 0xe, 0xe}, {0x7?, 0xc0000be940?, 0x8263e0?})
    /home/stapelberg/upstream-go/src/testing/testing.go:2475 +0x494
testing.(*M).Run(0xc0000b41e0)
    /home/stapelberg/upstream-go/src/testing/testing.go:2337 +0x633
main.main()
    _testmain.go:75 +0x9b

goroutine 9 [semacquire]:
runtime.StopTrace(...)
    /home/stapelberg/upstream-go/src/runtime/trace.go:325
runtime/trace.(*traceMultiplexer).removingSubscriber(0x8262e0)
    /home/stapelberg/upstream-go/src/runtime/trace/subscribe.go:126 +0x36
runtime/trace.(*traceMultiplexer).unsubscribeTraceStartWriter(0x8262e0)
    /home/stapelberg/upstream-go/src/runtime/trace/subscribe.go:93 +0x72
runtime/trace.Stop(...)
    /home/stapelberg/upstream-go/src/runtime/trace/trace.go:125
golang.org/x/exp/trace.(*FlightRecorder).Stop(0xc000034180)
    /home/stapelberg/x/exp/trace/flightrecorder.go:249 +0x38
golang.org/x/exp/trace_test.TestFlightRecorderDoubleStart(0xc000007dc0)
    /home/stapelberg/x/exp/trace/flightrecorder_test.go:34 +0xdf
testing.tRunner(0xc000007dc0, 0x66a3e8)
    /home/stapelberg/upstream-go/src/testing/testing.go:1934 +0xea
created by testing.(*T).Run in goroutine 1
    /home/stapelberg/upstream-go/src/testing/testing.go:1997 +0x465

goroutine 12 [sync.Mutex.Lock]:
internal/sync.runtime_SemacquireMutex(0x1?, 0x1?, 0x0?)
    /home/stapelberg/upstream-go/src/runtime/sema.go:95 +0x25
internal/sync.(*Mutex).lockSlow(0x8262e0)
    /home/stapelberg/upstream-go/src/internal/sync/mutex.go:149 +0x15d
internal/sync.(*Mutex).Lock(...)
    /home/stapelberg/upstream-go/src/internal/sync/mutex.go:70
sync.(*Mutex).Lock(...)
    /home/stapelberg/upstream-go/src/sync/mutex.go:46
runtime/trace.(*traceMultiplexer).unsubscribeTraceStartWriter(0x8262e0)
    /home/stapelberg/upstream-go/src/runtime/trace/subscribe.go:90 +0x45
runtime/trace.Stop(...)
    /home/stapelberg/upstream-go/src/runtime/trace/trace.go:125
golang.org/x/exp/trace.(*recorder).Write.func1()
    /home/stapelberg/x/exp/trace/flightrecorder.go:127 +0x55
golang.org/x/exp/trace.(*recorder).Write(0xc0000283d0, {0xc0003c0000, 0x10, 0x10})
    /home/stapelberg/x/exp/trace/flightrecorder.go:139 +0x2e8
runtime/trace.(*traceMultiplexer).startLocked.func1()
    /home/stapelberg/upstream-go/src/runtime/trace/subscribe.go:160 +0x64
created by runtime/trace.(*traceMultiplexer).startLocked in goroutine 9
    /home/stapelberg/upstream-go/src/runtime/trace/subscribe.go:157 +0x132
FAIL    golang.org/x/exp/trace  600.109s
?       golang.org/x/exp/trace/internal/raw [no test files]
?       golang.org/x/exp/trace/internal/testgen [no test files]
?       golang.org/x/exp/trace/internal/testtrace   [no test files]
?       golang.org/x/exp/trace/internal/tracev1 [no test files]
=== RUN   TestSpecs
--- PASS: TestSpecs (0.00s)
PASS
ok      golang.org/x/exp/trace/internal/tracev2 0.005s
?       golang.org/x/exp/trace/internal/version [no test files]
FAIL

What did you expect to see?

“PASS” :)

Instead, since https://go.dev/cl/693398, the tests time out.

Comment From: gabyhelp

Related Issues

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

Comment From: gopherbot

Change https://go.dev/cl/697417 mentions this issue: trace: handle end-of-generation in flight recorder