From 84890c72fc2668074549b4e47b9f21e6fb955cff Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 8 Jun 2017 13:48:41 -0400 Subject: [PATCH] runtime: more diagnostics for TestStackGrowth 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 TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/runtime/stack_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/runtime/stack_test.go b/src/runtime/stack_test.go index 7a758d1897..965c4e6838 100644 --- a/src/runtime/stack_test.go +++ b/src/runtime/stack_test.go @@ -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 } -- 2.50.0