mirror of
https://github.com/golang/go
synced 2024-11-25 21:37:58 -07:00
runtime: increase g0 stack size in non-cgo case
Currently, for non-cgo programs, the g0 stack size is 8 KiB on most platforms. With PGO which could cause aggressive inlining in the runtime, the runtime stack frames are larger and could overflow the 8 KiB g0 stack. Increase it to 16 KiB. This is only one per OS thread, so it shouldn't increase memory use much. Fixes #62120. Fixes #62489. Change-Id: I565b154517021f1fd849424dafc3f0f26a755cac Reviewed-on: https://go-review.googlesource.com/c/go/+/526995 Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
2b3c1c5937
commit
c6d550a668
@ -1542,7 +1542,7 @@ func mstart0() {
|
|||||||
// but is somewhat arbitrary.
|
// but is somewhat arbitrary.
|
||||||
size := gp.stack.hi
|
size := gp.stack.hi
|
||||||
if size == 0 {
|
if size == 0 {
|
||||||
size = 8192 * sys.StackGuardMultiplier
|
size = 16384 * sys.StackGuardMultiplier
|
||||||
}
|
}
|
||||||
gp.stack.hi = uintptr(noescape(unsafe.Pointer(&size)))
|
gp.stack.hi = uintptr(noescape(unsafe.Pointer(&size)))
|
||||||
gp.stack.lo = gp.stack.hi - size + 1024
|
gp.stack.lo = gp.stack.hi - size + 1024
|
||||||
@ -1938,7 +1938,7 @@ func allocm(pp *p, fn func(), id int64) *m {
|
|||||||
if iscgo || mStackIsSystemAllocated() {
|
if iscgo || mStackIsSystemAllocated() {
|
||||||
mp.g0 = malg(-1)
|
mp.g0 = malg(-1)
|
||||||
} else {
|
} else {
|
||||||
mp.g0 = malg(8192 * sys.StackGuardMultiplier)
|
mp.g0 = malg(16384 * sys.StackGuardMultiplier)
|
||||||
}
|
}
|
||||||
mp.g0.m = mp
|
mp.g0.m = mp
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user