From b6fa505c4a3508600a4e4d7834228046b0310873 Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Tue, 21 May 2024 04:15:40 +0000 Subject: [PATCH] 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 Auto-Submit: Michael Knyszek Reviewed-by: Michael Pratt --- src/runtime/traceallocfree.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/runtime/traceallocfree.go b/src/runtime/traceallocfree.go index 67c6f40926..e6a2a79c69 100644 --- a/src/runtime/traceallocfree.go +++ b/src/runtime/traceallocfree.go @@ -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) } -- 2.48.1