]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/race: fix finalizer tests
authorDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Feb 2014 14:12:46 +0000 (18:12 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Feb 2014 14:12:46 +0000 (18:12 +0400)
After "runtime: combine small NoScan allocations" finalizers
for small objects run more non deterministically.
TestRaceFin episodically fails on my darwin/amd64.

LGTM=khr
R=golang-codereviews, khr, dave
CC=golang-codereviews
https://golang.org/cl/56970043

src/pkg/runtime/race/testdata/finalizer_test.go

index 2b2607689aee627887b864c4cbdff5f21a416a6f..222cbf67a87f80f799717931957d01c32982183a 100644 (file)
@@ -14,16 +14,16 @@ import (
 func TestNoRaceFin(t *testing.T) {
        c := make(chan bool)
        go func() {
-               x := new(int)
-               runtime.SetFinalizer(x, func(x *int) {
-                       *x = 42
+               x := new(string)
+               runtime.SetFinalizer(x, func(x *string) {
+                       *x = "foo"
                })
-               *x = 66
+               *x = "bar"
                c <- true
        }()
        <-c
        runtime.GC()
-       time.Sleep(1e8)
+       time.Sleep(100 * time.Millisecond)
 }
 
 var finVar struct {
@@ -34,8 +34,8 @@ var finVar struct {
 func TestNoRaceFinGlobal(t *testing.T) {
        c := make(chan bool)
        go func() {
-               x := new(int)
-               runtime.SetFinalizer(x, func(x *int) {
+               x := new(string)
+               runtime.SetFinalizer(x, func(x *string) {
                        finVar.Lock()
                        finVar.cnt++
                        finVar.Unlock()
@@ -44,7 +44,7 @@ func TestNoRaceFinGlobal(t *testing.T) {
        }()
        <-c
        runtime.GC()
-       time.Sleep(1e8)
+       time.Sleep(100 * time.Millisecond)
        finVar.Lock()
        finVar.cnt++
        finVar.Unlock()
@@ -54,14 +54,14 @@ func TestRaceFin(t *testing.T) {
        c := make(chan bool)
        y := 0
        go func() {
-               x := new(int)
-               runtime.SetFinalizer(x, func(x *int) {
+               x := new(string)
+               runtime.SetFinalizer(x, func(x *string) {
                        y = 42
                })
                c <- true
        }()
        <-c
        runtime.GC()
-       time.Sleep(1e8)
+       time.Sleep(100 * time.Millisecond)
        y = 66
 }