From: Austin Clements Date: Thu, 8 Jun 2017 17:48:41 +0000 (-0400) Subject: runtime: more diagnostics for TestStackGrowth X-Git-Tag: go1.9beta1~68 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=84890c72fc2668074549b4e47b9f21e6fb955cff;p=gostls13.git 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 --- 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 }