Commit c8231558 authored by Austin Clements's avatar Austin Clements

runtime: ensure sysStat for mheap_.arenas is aligned

We don't want to account the memory for mheap_.arenas because most of
it is never touched, so currently we pass the address of a uint64 on
the heap. However, at least on mips, it's possible for this uint64 to
be unaligned, which causes the atomic add in mSysStatInc to crash.

Fix this by instead passing a nil stat pointer.

Fixes #23946.

Change-Id: I091587df1b3066c330b6bb4d834e4596c407910f
Reviewed-on: https://go-review.googlesource.com/95695
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
parent 16c5d30c
...@@ -302,8 +302,7 @@ func mallocinit() { ...@@ -302,8 +302,7 @@ func mallocinit() {
// Map the arena index. Most of this will never be written to, // Map the arena index. Most of this will never be written to,
// so we don't account it. // so we don't account it.
var untracked uint64 mheap_.arenas = (*[memLimit / heapArenaBytes]*heapArena)(persistentalloc(unsafe.Sizeof(*mheap_.arenas), sys.PtrSize, nil))
mheap_.arenas = (*[memLimit / heapArenaBytes]*heapArena)(persistentalloc(unsafe.Sizeof(*mheap_.arenas), sys.PtrSize, &untracked))
if mheap_.arenas == nil { if mheap_.arenas == nil {
throw("failed to allocate arena index") throw("failed to allocate arena index")
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment