mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00: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
1 changed files with 3 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue