mirror of
https://github.com/golang/go
synced 2024-11-26 13:08:08 -07:00
runtime: non-strict InlTreeIndex lookup in expandFinalInlineFrame
This is a follow-up to golang.org/cl/301369, which made the same change in Frames.Next. The same logic applies here: a profile stack may have been truncated at an invalid PC provided by cgoTraceback. expandFinalInlineFrame will then try to lookup the inline tree and crash. The same fix applies as well: upon encountering a bad PC, simply leave it as-is and move on. Fixes #44971 Fixes #45480 Change-Id: I2823c67a1f3425466b05384cc6d30f5fc8ee6ddc Reviewed-on: https://go-review.googlesource.com/c/go/+/309109 Reviewed-by: Michael Knyszek <mknyszek@google.com> Trust: Michael Pratt <mpratt@google.com>
This commit is contained in:
parent
5c9b6e8e63
commit
aad13cbb74
@ -185,7 +185,9 @@ func runtime_expandFinalInlineFrame(stk []uintptr) []uintptr {
|
|||||||
var cache pcvalueCache
|
var cache pcvalueCache
|
||||||
inltree := (*[1 << 20]inlinedCall)(inldata)
|
inltree := (*[1 << 20]inlinedCall)(inldata)
|
||||||
for {
|
for {
|
||||||
ix := pcdatavalue(f, _PCDATA_InlTreeIndex, tracepc, &cache)
|
// Non-strict as cgoTraceback may have added bogus PCs
|
||||||
|
// with a valid funcInfo but invalid PCDATA.
|
||||||
|
ix := pcdatavalue1(f, _PCDATA_InlTreeIndex, tracepc, &cache, false)
|
||||||
if ix < 0 {
|
if ix < 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user