• Hana Kim's avatar
    runtime/pprof: avoid crash due to truncated stack traces · ea18a1c2
    Hana Kim authored
    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: default avatarKeith Randall <khr@golang.org>
    ea18a1c2
pprof_test.go 32.7 KB