aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2023-09-08 12:14:30 -0400
committerCherry Mui <cherryyz@google.com>2023-09-22 18:58:01 +0000
commitcd671a1180441309e88c7113c86157e91888ded7 (patch)
treedd0111cb980026da9da2f94589cab7cf8496001b
parentfc57cc31a0981775bdbb438338ad036b05b03b60 (diff)
downloadgo-cd671a1180441309e88c7113c86157e91888ded7.tar.gz
go-cd671a1180441309e88c7113c86157e91888ded7.zip
[release-branch.go1.21] 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. Updates #62120. Updates #62489. Fixes #62537. 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> (cherry picked from commit c6d550a6683cebb2a11d7fa91823edf7db1d58a5) Reviewed-on: https://go-review.googlesource.com/c/go/+/527055
-rw-r--r--src/runtime/proc.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index 9fd200ea32..afb33c1e8b 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -1543,7 +1543,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
@@ -1939,7 +1939,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