diff options
| author | Cherry Mui <cherryyz@google.com> | 2023-09-08 12:14:30 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2023-09-08 18:40:23 +0000 |
| commit | c6d550a6683cebb2a11d7fa91823edf7db1d58a5 (patch) | |
| tree | b503635e1c2d0b8feeaafbe76afca8084ffc1af3 /src | |
| parent | 2b3c1c5937f41cda7650c78fcf1f8e7d28d8c9c2 (diff) | |
| download | go-c6d550a6683cebb2a11d7fa91823edf7db1d58a5.tar.xz | |
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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/proc.go | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 8fab6d46d1..1ec4712a2b 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -1542,7 +1542,7 @@ func mstart0() { // but is somewhat arbitrary. size := gp.stack.hi if size == 0 { - size = 8192 * sys.StackGuardMultiplier + size = 16384 * sys.StackGuardMultiplier } gp.stack.hi = uintptr(noescape(unsafe.Pointer(&size))) gp.stack.lo = gp.stack.hi - size + 1024 @@ -1938,7 +1938,7 @@ func allocm(pp *p, fn func(), id int64) *m { if iscgo || mStackIsSystemAllocated() { mp.g0 = malg(-1) } else { - mp.g0 = malg(8192 * sys.StackGuardMultiplier) + mp.g0 = malg(16384 * sys.StackGuardMultiplier) } mp.g0.m = mp |
