pkg/proc: Fix panic in goroutine parsing for binaries compiled with go1.10 (#2283)

Before go1.11 waitreason field was a string, not an int. Return 0
waitreason for old go versions.

Should fix #2282
This commit is contained in:
nd 2021-01-04 17:53:23 +01:00 committed by GitHub
parent 57f033e4bc
commit 6726ec3aa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -850,7 +850,10 @@ func (v *Variable) parseG() (*G, error) {
gopc := loadInt64Maybe("gopc") gopc := loadInt64Maybe("gopc")
startpc := loadInt64Maybe("startpc") startpc := loadInt64Maybe("startpc")
waitSince := loadInt64Maybe("waitsince") waitSince := loadInt64Maybe("waitsince")
waitReason := loadInt64Maybe("waitreason") waitReason := int64(0)
if producer := v.bi.Producer(); producer != "" && goversion.ProducerAfterOrEqual(producer, 1, 11) {
waitReason = loadInt64Maybe("waitreason")
}
var stackhi, stacklo uint64 var stackhi, stacklo uint64
if stackVar := v.loadFieldNamed("stack"); stackVar != nil { if stackVar := v.loadFieldNamed("stack"); stackVar != nil {
if stackhiVar := stackVar.fieldVariable("hi"); stackhiVar != nil { if stackhiVar := stackVar.fieldVariable("hi"); stackhiVar != nil {