Describe the bug
TestDeleteHandlerTombstone in pkg/agent/controller/bgp fails on the Windows runner. The test does not report an assertion failure, the whole test binary is killed while its goroutines are parked in a testing/synctest bubble which never quiesces:
goroutine 2689 gp=0xc000718780 m=nil [synctest.Run (durable), synctest bubble 2]:
internal/synctest.Run(0xc00012a880)
src/runtime/synctest.go:218
testing/synctest.Test(0xc000176800, 0xc000167b20)
src/testing/synctest/synctest.go:290
antrea.io/antrea/v2/pkg/agent/controller/bgp.TestDeleteHandlerTombstone.func11(0xc000176800)
pkg/agent/controller/bgp/controller_test.go:2726
...
FAIL antrea.io/antrea/v2/pkg/agent/controller/bgp 4.769s
The other goroutines of the same bubble are parked on sync.WaitGroup.Wait (durable), chan receive (durable) and select (durable).
Occurrences
Same test, same failure mode, on unrelated PRs (#7803 only changes pkg/agent/route, pkg/agent/client and docs):
Additional context
Only the Windows job is affected, the Linux one passes. The runner uses Go 1.26.5.
#8192 fixed a different flake in the same test file, so the remaining one may have the same root cause.
Note that testing/synctest does not treat locking a mutex as durably blocking, so a bubble containing a goroutine which is waiting for one never quiesces.
Describe the bug
TestDeleteHandlerTombstoneinpkg/agent/controller/bgpfails on the Windows runner. The test does not report an assertion failure, the whole test binary is killed while its goroutines are parked in atesting/synctestbubble which never quiesces:The other goroutines of the same bubble are parked on
sync.WaitGroup.Wait (durable),chan receive (durable)andselect (durable).Occurrences
Same test, same failure mode, on unrelated PRs (#7803 only changes
pkg/agent/route,pkg/agent/clientand docs):Additional context
Only the Windows job is affected, the Linux one passes. The runner uses Go 1.26.5.
#8192 fixed a different flake in the same test file, so the remaining one may have the same root cause.
Note that
testing/synctestdoes not treat locking a mutex as durably blocking, so a bubble containing a goroutine which is waiting for one never quiesces.