runtime: move goroutine stack exists events after span events

Preserving an ordering wherein spans are always named before their
constituents makes parsing much more straightforward.

Change-Id: Ida8764801a6c516d672ba343e4ce01b66ce9b427
Reviewed-on: https://go-review.googlesource.com/c/go/+/586999
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
This commit is contained in:
Michael Anthony Knyszek 2024-05-21 04:15:40 +00:00 committed by Gopher Robot
parent 1110c4095e
commit b6fa505c4a
1 changed files with 5 additions and 5 deletions

View File

@ -49,11 +49,6 @@ func traceSnapshotMemory(gen uintptr) {
throw("traceSnapshotMemory: tracing is not enabled")
}
// Write out all the goroutine stacks.
forEachGRace(func(gp *g) {
trace.GoroutineStackExists(gp.stack.lo, gp.stack.hi-gp.stack.lo)
})
// Write out all the heap spans and heap objects.
for _, s := range mheap_.allspans {
if s.state.get() == mSpanDead {
@ -77,6 +72,11 @@ func traceSnapshotMemory(gen uintptr) {
abits.advance()
}
}
// Write out all the goroutine stacks.
forEachGRace(func(gp *g) {
trace.GoroutineStackExists(gp.stack.lo, gp.stack.hi-gp.stack.lo)
})
traceRelease(trace)
}