summaryrefslogtreecommitdiff
path: root/test/stress/runstress.go
diff options
context:
space:
mode:
authorRobert Obryk <robryk@gmail.com>2013-06-03 07:07:31 -0700
committerRobert Obryk <robryk@gmail.com>2013-06-03 07:07:31 -0700
commitb2ba8cdd7ba51bbdbb5ba6f68cef051056281aab (patch)
tree45fef9d84f66c89b46ec2e7523d74af8887f286f /test/stress/runstress.go
parentc91d636e93dd8ed3c1a1b4ed2060ac3ccf4db810 (diff)
downloadgo-b2ba8cdd7ba51bbdbb5ba6f68cef051056281aab.tar.gz
test/stress: fix a goroutine leak in threadRing stresstest
Fixes issue 5527 R=golang-dev, dvyukov CC=golang-dev https://codereview.appspot.com/9955043 Committer: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'test/stress/runstress.go')
-rw-r--r--test/stress/runstress.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/test/stress/runstress.go b/test/stress/runstress.go
index b5adf6a4a..76ab2a8b4 100644
--- a/test/stress/runstress.go
+++ b/test/stress/runstress.go
@@ -114,11 +114,16 @@ func stressExec() {
}
}
-func ringf(in <-chan int, out chan<- int, donec chan<- bool) {
+func ringf(in <-chan int, out chan<- int, donec chan bool) {
for {
- n := <-in
+ var n int
+ select {
+ case <-donec:
+ return
+ case n = <-in:
+ }
if n == 0 {
- donec <- true
+ close(donec)
return
}
out <- n - 1