From 6065f1c5889159c9fa1b6c74726d04fc9abea9fe Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 29 Jan 2019 15:31:10 +0000 Subject: runtime: fix sigprof frame counting If sigtramp and sigtrampgo are both on stack, n -= framesToDiscard is executed twice, which should actually run only once. Reviewed-on: https://go-review.googlesource.com/c/159238 From-SVN: r268366 --- libgo/go/runtime/proc.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'libgo') diff --git a/libgo/go/runtime/proc.go b/libgo/go/runtime/proc.go index 05dd53d..b4fa88f 100644 --- a/libgo/go/runtime/proc.go +++ b/libgo/go/runtime/proc.go @@ -3542,14 +3542,13 @@ func sigprof(pc uintptr, gp *g, mp *m) { for i := 0; i < n; i++ { if stklocs[i].function == "runtime.sigtrampgo" && i+2 < n { framesToDiscard = i + 2 - n -= framesToDiscard } if stklocs[i].function == "runtime.sigtramp" && i+2 < n { framesToDiscard = i + 2 - n -= framesToDiscard break } } + n -= framesToDiscard for i := 0; i < n; i++ { stk[i] = stklocs[i+framesToDiscard].pc } -- cgit v1.1