From 5fdefe91da79eda584a30b6f32b9b841bbcc23dc Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Thu, 7 Apr 2016 11:47:32 +1200 Subject: [PATCH] runtime: clamp OS-reported number of processors to _MaxGomaxprocs So that all Go processes do not die on startup on a system with >256 CPUs. I tested this by hacking osinit to set ncpu to 1000. Updates #15131 Fixes #15160 Change-Id: I52e061a0de97be41d684dd8b748fa9087d6f1aef Reviewed-on: https://go-review.googlesource.com/21599 Reviewed-by: Brad Fitzpatrick Reviewed-on: https://go-review.googlesource.com/22206 --- src/runtime/proc.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/runtime/proc.go b/src/runtime/proc.go index d1f5088b50..47ccb37c9f 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -443,6 +443,9 @@ func schedinit() { sched.lastpoll = uint64(nanotime()) procs := int(ncpu) + if procs > _MaxGomaxprocs { + procs = _MaxGomaxprocs + } if n := atoi(gogetenv("GOMAXPROCS")); n > 0 { if n > _MaxGomaxprocs { n = _MaxGomaxprocs -- 2.50.0