From 23ce80efebbdebd202314717ee7372d4f0f25051 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Mon, 27 Apr 2015 16:31:16 -0400 Subject: [PATCH] runtime/race: fix benchmark deadlock Currently TestRaceCrawl fails to wg.Done for every wg.Adds if the depth ever reaches 0. This causes the test to deadlock. Under the race detector, this deadlock is not detected, so the test eventually times out. This only recently became a problem. Prior to commit e870f06 the depth would never reach 0 because the strict round-robin goroutine schedule ensured that all of the URLs were already "seen" by depth 2. Now that the runtime prefers scheduling the most recently started goroutine, the test is able to reach depth 0 and trigger this deadlock. Change-Id: I5176302a89614a344c84d587073b364833af6590 Reviewed-on: https://go-review.googlesource.com/9344 Run-TryBot: Austin Clements Reviewed-by: Russ Cox --- src/runtime/race/testdata/mop_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/runtime/race/testdata/mop_test.go b/src/runtime/race/testdata/mop_test.go index cb17a27d37..095ead6c9a 100644 --- a/src/runtime/race/testdata/mop_test.go +++ b/src/runtime/race/testdata/mop_test.go @@ -1063,6 +1063,7 @@ func TestRaceCrawl(t *testing.T) { }() seen[u] = true if d <= 0 { + wg.Done() return } urls := [...]string{"a", "b", "c"} -- 2.50.0