]> Cypherpunks repositories - gostls13.git/commit
runtime/pprof: avoid crash due to truncated stack traces
authorHana Kim <hyangah@gmail.com>
Mon, 18 Nov 2019 17:44:33 +0000 (12:44 -0500)
committerHyang-Ah Hana Kim <hyangah@gmail.com>
Fri, 22 Nov 2019 14:32:02 +0000 (14:32 +0000)
commitea18a1c2126e5e94924f7f68771fd49876fa7d3a
tree7c86adf0f5eabdd6d5ebfe224fb4a9e458c1dd2c
parent95be9b7559e5df1b2cb6b18b517f4f20de5b99a4
runtime/pprof: avoid crash due to truncated stack traces

The profile proto message builder maintains a location entry cache
that maps a location (possibly involving multiple user frames
that represent inlined function calls) to the location id. We have
been using the first pc of the inlined call sequence as the key of
the cached location entry assuming that, for a given pc, the sequence
of frames representing the inlined call stack is deterministic and
stable. Then, when analyzing the new stack trace, we expected the
exact number of pcs to be present in the captured stack trace upon
the cache hit.

This assumption does not hold, however, in the presence of the stack
trace truncation in the runtime during profiling, and also with the
potential bugs in runtime.

A better fix is to use all the pcs of the inlined call sequece as
the key instead of the first pc. But that is a bigger code change.
This CL avoids the crash assuming the trace was truncated.

Fixes #35538

Change-Id: I8c6bae98bc8b178ee51523c7316f56b1cce6df16
Reviewed-on: https://go-review.googlesource.com/c/go/+/207609
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
Reviewed-by: Keith Randall <khr@golang.org>
src/runtime/pprof/pprof_test.go
src/runtime/pprof/proto.go