]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: more diagnostics for TestStackGrowth
authorAustin Clements <austin@google.com>
Thu, 8 Jun 2017 17:48:41 +0000 (13:48 -0400)
committerAustin Clements <austin@google.com>
Thu, 8 Jun 2017 18:21:37 +0000 (18:21 +0000)
This adds diagnostics so we can tell if the finalizer has started, in
addition to whether or not it has finished.

Updates #19381.

Change-Id: Icb7b1b0380c9ad1128b17074828945511a6cca5d
Reviewed-on: https://go-review.googlesource.com/45138
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/runtime/stack_test.go

index 7a758d1897c1ce52f96a94816a7a13d3760d80d8..965c4e68384cd25ffeb1a0da58c7b742f701ad71 100644 (file)
@@ -8,6 +8,7 @@ import (
        . "runtime"
        "strings"
        "sync"
+       "sync/atomic"
        "testing"
        "time"
 )
@@ -97,9 +98,11 @@ func TestStackGrowth(t *testing.T) {
        go func() {
                defer wg.Done()
                done := make(chan bool)
+               var started uint32
                go func() {
                        s := new(string)
                        SetFinalizer(s, func(ss *string) {
+                               atomic.StoreUint32(&started, 1)
                                growStack()
                                done <- true
                        })
@@ -111,6 +114,9 @@ func TestStackGrowth(t *testing.T) {
                select {
                case <-done:
                case <-time.After(20 * time.Second):
+                       if atomic.LoadUint32(&started) == 0 {
+                               t.Log("finalizer did not start")
+                       }
                        t.Error("finalizer did not run")
                        return
                }