Commit 17edb331 by Ian Lance Taylor

runtime: on 32-bit systems, limit default GOMAXPROCS to 32

Otherwise we can easily run out of stack space for threads.

The user can still override by setting GOMAXPROCS.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/219278
parent 55992626
c94637ad6fd38d4814fb02d094a1a73f19323d71 3e46519cee5c916a9b39480fbac13f4ffc6a93b0
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -563,6 +563,14 @@ func schedinit() { ...@@ -563,6 +563,14 @@ func schedinit() {
sched.lastpoll = uint64(nanotime()) sched.lastpoll = uint64(nanotime())
procs := ncpu procs := ncpu
// In 32-bit mode, we can burn a lot of memory on thread stacks.
// Try to avoid this by limiting the number of threads we run
// by default.
if sys.PtrSize == 4 && procs > 32 {
procs = 32
}
if n, ok := atoi32(gogetenv("GOMAXPROCS")); ok && n > 0 { if n, ok := atoi32(gogetenv("GOMAXPROCS")); ok && n > 0 {
procs = n procs = n
} }
......
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