From: Austin Clements Date: Thu, 22 Feb 2018 17:30:27 +0000 (-0500) Subject: runtime: don't assume arena is in address order X-Git-Tag: go1.11beta1~1475 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9680980efe66fc91d838fa9a06077f6ee87f0759;p=gostls13.git runtime: don't assume arena is in address order On amd64, the arena is no longer in address space order, but currently the heap dumper assumes that it is. Fix this assumption. Change-Id: Iab1953cd36b359d0fb78ed49e5eb813116a18855 Reviewed-on: https://go-review.googlesource.com/96776 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson --- diff --git a/src/runtime/heapdump.go b/src/runtime/heapdump.go index 362cb7c308..dbeaed9277 100644 --- a/src/runtime/heapdump.go +++ b/src/runtime/heapdump.go @@ -491,10 +491,13 @@ func dumpparams() { var arenaStart, arenaEnd uintptr for i, ha := range mheap_.arenas { if ha != nil { - if arenaStart == 0 { - arenaStart = arenaBase(uint(i)) + base := arenaBase(uint(i)) + if arenaStart == 0 || base < arenaStart { + arenaStart = base + } + if base+heapArenaBytes > arenaEnd { + arenaEnd = base + heapArenaBytes } - arenaEnd = arenaBase(uint(i)) + heapArenaBytes } } dumpint(uint64(arenaStart))