mirror of
https://github.com/golang/go
synced 2024-11-23 12:40:11 -07:00
runtime/pprof: don't print extraneous 0 after goexit
This fixes erroneous handling of the more result parameter of runtime.Frames.Next. Fixes #16349. Change-Id: I4f1c0263dafbb883294b31dbb8922b9d3e650200 Reviewed-on: https://go-review.googlesource.com/24911 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
4d00937cec
commit
29ed5da5f2
@ -353,12 +353,9 @@ func printStackRecord(w io.Writer, stk []uintptr, allFrames bool) {
|
|||||||
if name == "" {
|
if name == "" {
|
||||||
show = true
|
show = true
|
||||||
fmt.Fprintf(w, "#\t%#x\n", frame.PC)
|
fmt.Fprintf(w, "#\t%#x\n", frame.PC)
|
||||||
} else {
|
} else if name != "runtime.goexit" && (show || !strings.HasPrefix(name, "runtime.")) {
|
||||||
// Hide runtime.goexit and any runtime functions at the beginning.
|
// Hide runtime.goexit and any runtime functions at the beginning.
|
||||||
// This is useful mainly for allocation traces.
|
// This is useful mainly for allocation traces.
|
||||||
if name == "runtime.goexit" || !show && strings.HasPrefix(name, "runtime.") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
show = true
|
show = true
|
||||||
fmt.Fprintf(w, "#\t%#x\t%s+%#x\t%s:%d\n", frame.PC, name, frame.PC-frame.Entry, frame.File, frame.Line)
|
fmt.Fprintf(w, "#\t%#x\t%s+%#x\t%s:%d\n", frame.PC, name, frame.PC-frame.Entry, frame.File, frame.Line)
|
||||||
}
|
}
|
||||||
|
@ -497,6 +497,10 @@ func TestBlockProfile(t *testing.T) {
|
|||||||
t.Fatalf("Bad profile header:\n%v", prof)
|
t.Fatalf("Bad profile header:\n%v", prof)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.HasSuffix(prof, "#\t0x0\n\n") {
|
||||||
|
t.Errorf("Useless 0 suffix:\n%v", prof)
|
||||||
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
if !regexp.MustCompile(strings.Replace(test.re, "\t", "\t+", -1)).MatchString(prof) {
|
if !regexp.MustCompile(strings.Replace(test.re, "\t", "\t+", -1)).MatchString(prof) {
|
||||||
t.Fatalf("Bad %v entry, expect:\n%v\ngot:\n%v", test.name, test.re, prof)
|
t.Fatalf("Bad %v entry, expect:\n%v\ngot:\n%v", test.name, test.re, prof)
|
||||||
|
Loading…
Reference in New Issue
Block a user