]> Cypherpunks repositories - gostls13.git/commit
runtime/pprof: don't produce 0 location in count profiles
authorAustin Clements <austin@google.com>
Wed, 17 May 2017 18:27:28 +0000 (14:27 -0400)
committerAustin Clements <austin@google.com>
Wed, 17 May 2017 18:58:31 +0000 (18:58 +0000)
commitc34add780b65d4c18978a9e490a2db9e4ff22d3a
tree06fc1faad5178c93a6f472dccbf4dac08dc97b78
parent2dc27839df7d51b0544c0ac8b2a0b8f030b7a90c
runtime/pprof: don't produce 0 location in count profiles

profileBuilder.locForPC returns 0 to mean "no location" because 0 is
an invalid location index. However, the code to build count profiles
doesn't check the result of locForPC, so this 0 location index ends up
in the profile's location list. This, in turn, causes problems later
when we decode the profile because it puts a nil *Location in the
sample's location slice, which can later lead to a nil pointer panic.

Fix this by making printCountProfile correctly discard the result of
locForPC if it returns 0. This makes this call match the other two
calls of locForPC.

Updates #15156.

Change-Id: I4492b3652b513448bc56f4cfece4e37da5e42f94
Reviewed-on: https://go-review.googlesource.com/43630
Reviewed-by: Michael Matloob <matloob@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/runtime/pprof/pprof.go