]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/pprof: fix errors in pprof_test
authormatloob <matloob@golang.org>
Wed, 15 Oct 2025 16:52:47 +0000 (12:52 -0400)
committerMichael Matloob <matloob@golang.org>
Wed, 15 Oct 2025 18:15:17 +0000 (11:15 -0700)
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 <matloob@google.com>
TryBot-Bypass: Michael Matloob <matloob@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/runtime/mprof.go
src/runtime/pprof/pprof_test.go

index 743fa5a3fe848bd3f28f32d5c4ca02d4d872f19a..794f57cee24a7c189347f9c883a2239bf4686f13 100644 (file)
@@ -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.
index 23d3cf585e59f1ef95075f0724fa89774531f492..b816833e52285f20a3e62f7c3b9ba3f849e16a9f 100644 (file)
@@ -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