mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: call enableMetadataHugePages and its callees on the systemstack
These functions acquire the heap lock. If they're not called on the systemstack, a stack growth could cause a self-deadlock since stack growth may allocate memory from the page heap. This has been a problem for a while. If this is what's plaguing the ppc64 port right now, it's very surprising (and probably just coincidental) that it's showing up now. For #64050. For #64062. Fixes #64067. Change-Id: I2b95dc134d17be63b9fe8f7a3370fe5b5438682f Reviewed-on: https://go-review.googlesource.com/c/go/+/541635 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Run-TryBot: Michael Knyszek <mknyszek@google.com> Auto-Submit: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Paul Murphy <murp@ibm.com>
This commit is contained in:
parent
8da6405e0d
commit
5f08b44799
3 changed files with 11 additions and 1 deletions
|
|
@ -437,6 +437,10 @@ func (p *pageAlloc) grow(base, size uintptr) {
|
|||
//
|
||||
// The heap lock must not be held over this operation, since it will briefly acquire
|
||||
// the heap lock.
|
||||
//
|
||||
// Must be called on the system stack because it acquires the heap lock.
|
||||
//
|
||||
//go:systemstack
|
||||
func (p *pageAlloc) enableChunkHugePages() {
|
||||
// Grab the heap lock to turn on huge pages for new chunks and clone the current
|
||||
// heap address space ranges.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue