runtime: fix race in BenchmarkPingPongHog

The master goroutine was returning before
the child goroutine had done its final i < b.N
(the one that fails and causes it to exit the loop)
and then the benchmark harness was updating
b.N, causing a read+write race on b.N.

Change-Id: I2504270a0de30544736f6c32161337a25b505c3e
Reviewed-on: https://go-review.googlesource.com/9368
Reviewed-by: Austin Clements <austin@google.com>
diff --git a/src/runtime/proc_test.go b/src/runtime/proc_test.go
index fccf397..4c5712d 100644
--- a/src/runtime/proc_test.go
+++ b/src/runtime/proc_test.go
@@ -366,18 +366,22 @@
 			pong <- <-ping
 		}
 		close(stop)
+		done <- true
 	}()
 	go func() {
 		for i := 0; i < b.N; i++ {
 			ping <- <-pong
 		}
+		done <- true
 	}()
 	b.ResetTimer()
 	ping <- true // Start ping-pong
 	<-stop
 	b.StopTimer()
 	<-ping // Let last ponger exit
-	<-done // Make sure hog exits
+	<-done // Make sure goroutines exit
+	<-done
+	<-done
 }
 
 func stackGrowthRecursive(i int) {