mirror of
https://github.com/golang/go
synced 2024-11-19 14:54:43 -07:00
runtime: don't ignore success of cgo profiling tracebacks
If a sigprof happens during a cgo call, we traceback from the entry point of the cgo call. However, if the SP is outside of the G's stack, we'll then ignore this traceback, even if it was successful, and overwrite it with just _ExternalCode. Fix this by accepting any successful traceback, regardless of whether we got it from a cgo entry point or from regular Go code. Fixes #13466. Change-Id: I5da9684361fc5964f44985d74a8cdf02ffefd213 Reviewed-on: https://go-review.googlesource.com/18327 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
ebf1f0fcbe
commit
b50b24837d
@ -3024,7 +3024,7 @@ func sigprof(pc, sp, lr uintptr, gp *g, mp *m) {
|
|||||||
}
|
}
|
||||||
n = gentraceback(pc, sp, lr, gp, 0, &stk[0], len(stk), nil, nil, flags)
|
n = gentraceback(pc, sp, lr, gp, 0, &stk[0], len(stk), nil, nil, flags)
|
||||||
}
|
}
|
||||||
if !traceback || n <= 0 {
|
if n <= 0 {
|
||||||
// Normal traceback is impossible or has failed.
|
// Normal traceback is impossible or has failed.
|
||||||
// See if it falls into several common cases.
|
// See if it falls into several common cases.
|
||||||
n = 0
|
n = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user