• Austin Clements's avatar
    runtime/pprof: don't produce 0 location in count profiles · c34add78
    Austin Clements authored
    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/43630Reviewed-by: 's avatarMichael Matloob <matloob@golang.org>
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    c34add78
pprof.go 24.3 KB