mirror of
https://github.com/golang/go
synced 2024-11-23 13:40:04 -07:00
cmd/pprof: fix EOF handling when getting function source
getFunctionSource gathers five lines of "margin" around every requested sample line. However, if this margin went past the end of the source file, getFunctionSource would encounter an io.EOF error and abort with this error, resulting in listings like (pprof) list main.main ROUTINE ======================== main.main in ... 0 8.33s (flat, cum) 99.17% of Total Error: EOF (pprof) Modify the error handling in getFunctionSource so io.EOF is always considered non-fatal. If it reaches EOF, it simply returns the lines it has. LGTM=bradfitz R=rsc, bradfitz CC=golang-codereviews https://golang.org/cl/172600043
This commit is contained in:
parent
b30d2a856a
commit
38fef031e1
@ -358,9 +358,13 @@ func getFunctionSource(fun, file string, fns nodes, start, end int) (nodes, stri
|
||||
for {
|
||||
line, err := buf.ReadString('\n')
|
||||
if err != nil {
|
||||
if line == "" || err != io.EOF {
|
||||
if err != io.EOF {
|
||||
return nil, file, err
|
||||
}
|
||||
if line == "" {
|
||||
// end was at or past EOF; that's okay
|
||||
break
|
||||
}
|
||||
}
|
||||
if lineno >= start {
|
||||
flat, cum := sumNodes(lineNodes[lineno])
|
||||
|
Loading…
Reference in New Issue
Block a user