From bb5eb5171535b9080055fee5996bd55398202124 Mon Sep 17 00:00:00 2001 From: matloob Date: Wed, 15 Oct 2025 12:52:47 -0400 Subject: [PATCH] runtime/pprof: fix errors in pprof_test I think the original depth-1 argument to allocDeep was correct. Reverted that, and also the change to maxSkip in mprof.go, which was also incorrect. I think before we were usually passing accidentally in the loop over matched stacks when we really should usually have been passing in the previous loop. Change-Id: I6a6a696463e2baf045b66f418d7afbfcb49258e4 Reviewed-on: https://go-review.googlesource.com/c/go/+/712100 Reviewed-by: Michael Matloob TryBot-Bypass: Michael Matloob Reviewed-by: Michael Knyszek --- src/runtime/mprof.go | 2 +- src/runtime/pprof/pprof_test.go | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/runtime/mprof.go b/src/runtime/mprof.go index 743fa5a3fe..794f57cee2 100644 --- a/src/runtime/mprof.go +++ b/src/runtime/mprof.go @@ -49,7 +49,7 @@ const ( // desired maximum number of frames after expansion. // This should be at least as large as the largest skip value // used for profiling; otherwise stacks may be truncated inconsistently - maxSkip = 8 + maxSkip = 6 // maxProfStackDepth is the highest valid value for debug.profstackdepth. // It's used for the bucket.stk func. diff --git a/src/runtime/pprof/pprof_test.go b/src/runtime/pprof/pprof_test.go index 23d3cf585e..b816833e52 100644 --- a/src/runtime/pprof/pprof_test.go +++ b/src/runtime/pprof/pprof_test.go @@ -2549,9 +2549,6 @@ func TestProfilerStackDepth(t *testing.T) { for _, test := range tests { t.Run(test.profiler, func(t *testing.T) { - if test.profiler == "heap" { - testenv.SkipFlaky(t, 74029) - } var buf bytes.Buffer if err := Lookup(test.profiler).WriteTo(&buf, 0); err != nil { t.Fatalf("failed to write heap profile: %v", err) @@ -2586,6 +2583,7 @@ func TestProfilerStackDepth(t *testing.T) { t.Logf("matched stack=%s", stk) if len(stk) != depth { t.Errorf("want stack depth = %d, got %d", depth, len(stk)) + continue } if rootFn, wantFn := stk[depth-1], "runtime/pprof.allocDeep"; rootFn != wantFn { @@ -2663,7 +2661,7 @@ func goroutineDeep(t *testing.T, n int) { // guaranteed to have exactly the desired depth with produceProfileEvents as // their root frame which is expected by TestProfilerStackDepth. func produceProfileEvents(t *testing.T, depth int) { - allocDeep(depth + 1) // +1 for produceProfileEvents, ** + allocDeep(depth - 1) // -1 for produceProfileEvents, ** blockChanDeep(t, depth-2) // -2 for produceProfileEvents, **, chanrecv1 blockMutexDeep(t, depth-2) // -2 for produceProfileEvents, **, Unlock memSink = nil -- 2.52.0