You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
http://golang.org/cl/204636 attempts to group inlined frames into the same Location, as required by the pprof format. Once a location is created, it is cached for reuse by future identical frames.
However, the runtime may truncate stacks, potentially truncating in between inlined frames. If the truncated frame is encountered first, then separate locations will be created for the two frames. If a complete frame is encountered first, then a combined location will be use for both frames.
This behavior is nondeterministic, so similar profiles may different:
This may be particularly problematic for tools looking at diffs between two profiles.
Go 1.14 will nondeterministically generate profiles with either combined or split stacks (the two screenshots above). 1.13 always generated split stacks in this case.
When the stacks are split, 1.14 loses the inline information on depth1. (1.13 never had inline information).
What version of Go are you using (
go version
)?Does this issue reproduce with the latest release?
Regression in Go 1.14
What operating system and processor architecture are you using (
go env
)?go env
OutputWhat did you do?
Collect a heap profile from a profile with stacks truncated in the middle of inline frames: https://play.golang.org/p/6--6a10WPCa
What did you expect to see?
Consistent profile output.
What did you see instead?
http://golang.org/cl/204636 attempts to group inlined frames into the same Location, as required by the pprof format. Once a location is created, it is cached for reuse by future identical frames.
However, the runtime may truncate stacks, potentially truncating in between inlined frames. If the truncated frame is encountered first, then separate locations will be created for the two frames. If a complete frame is encountered first, then a combined location will be use for both frames.
This behavior is nondeterministic, so similar profiles may different:
This may be particularly problematic for tools looking at diffs between two profiles.
The former has location:
The latter has locations:
cc @hyangah @heschik
The text was updated successfully, but these errors were encountered: