mirror of https://github.com/golang/go.git
runtime: have ReadMemStats do a nil check before switching stacks
This gives the user a better stack trace experience. No need to expose them to runtime.systemstack and friends. Fixes #61158 Change-Id: I4f423f82e54b062773067c0ae64622e37cb3948b Reviewed-on: https://go-review.googlesource.com/c/go/+/507755 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
e4ed92a355
commit
e126572f8a
|
|
@ -347,6 +347,7 @@ func init() {
|
|||
// which is a snapshot as of the most recently completed garbage
|
||||
// collection cycle.
|
||||
func ReadMemStats(m *MemStats) {
|
||||
_ = m.Alloc // nil check test before we switch stacks, see issue 61158
|
||||
stopTheWorld(stwReadMemStats)
|
||||
|
||||
systemstack(func() {
|
||||
|
|
|
|||
|
|
@ -1147,6 +1147,7 @@ func showfuncinfo(sf srcFunc, firstFrame bool, calleeID abi.FuncID) bool {
|
|||
|
||||
// isExportedRuntime reports whether name is an exported runtime function.
|
||||
// It is only for runtime functions, so ASCII A-Z is fine.
|
||||
// TODO: this handles exported functions but not exported methods.
|
||||
func isExportedRuntime(name string) bool {
|
||||
const n = len("runtime.")
|
||||
return len(name) > n && name[:n] == "runtime." && 'A' <= name[n] && name[n] <= 'Z'
|
||||
|
|
|
|||
Loading…
Reference in New Issue