From: Russ Cox Date: Fri, 17 Jan 2014 22:42:24 +0000 (-0500) Subject: runtime: fix TestLFStackStress X-Git-Tag: go1.3beta1~938 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=98178b345ac7c4fb711e3327b16b1230cdab9d25;p=gostls13.git runtime: fix TestLFStackStress Fixes #7138. R=r, bradfitz, dave CC=dvyukov, golang-codereviews https://golang.org/cl/53910043 --- diff --git a/src/pkg/runtime/lfstack_test.go b/src/pkg/runtime/lfstack_test.go index 505aae6055..e518777045 100644 --- a/src/pkg/runtime/lfstack_test.go +++ b/src/pkg/runtime/lfstack_test.go @@ -71,6 +71,8 @@ func TestLFStack(t *testing.T) { } } +var stress []*MyNode + func TestLFStackStress(t *testing.T) { const K = 100 P := 4 * GOMAXPROCS(-1) @@ -80,14 +82,15 @@ func TestLFStackStress(t *testing.T) { } // Create 2 stacks. stacks := [2]*uint64{new(uint64), new(uint64)} - // Need to keep additional referenfces to nodes, the stack is not all that type-safe. - var nodes []*MyNode + // Need to keep additional references to nodes, + // the lock-free stack is not type-safe. + stress = nil // Push K elements randomly onto the stacks. sum := 0 for i := 0; i < K; i++ { sum += i node := &MyNode{data: i} - nodes = append(nodes, node) + stress = append(stress, node) LFStackPush(stacks[i%2], fromMyNode(node)) } c := make(chan bool, P) @@ -127,4 +130,7 @@ func TestLFStackStress(t *testing.T) { if sum2 != sum { t.Fatalf("Wrong sum %d/%d", sum2, sum) } + + // Let nodes be collected now. + stress = nil }