diff options
| author | Dmitriy Vyukov <dvyukov@google.com> | 2011-04-21 12:09:25 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2011-04-21 12:09:25 -0400 |
| commit | 29d78f124348d897a505e28fb28058d9a13163d0 (patch) | |
| tree | b449f15a7105ff1fcc67d7dce42e737132020291 /src/pkg/runtime/proc.c | |
| parent | bad5673c8f434b30803c879f4e969cf74c247e1c (diff) | |
| download | go-29d78f124348d897a505e28fb28058d9a13163d0.tar.xz | |
runtime: fix GOMAXPROCS vs garbage collection bug
Fixes #1715.
R=golang-dev, rsc1, rsc
CC=golang-dev
https://golang.org/cl/4434053
Diffstat (limited to 'src/pkg/runtime/proc.c')
| -rw-r--r-- | src/pkg/runtime/proc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index e212c7820f..a823dc6928 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -1196,6 +1196,12 @@ runtime·gomaxprocsfunc(int32 n) if (n <= 0) n = ret; runtime·gomaxprocs = n; + if (runtime·gcwaiting != 0) { + if (runtime·sched.mcpumax != 1) + runtime·throw("invalid runtime·sched.mcpumax during gc"); + schedunlock(); + return ret; + } runtime·sched.mcpumax = n; // handle fewer procs? if(runtime·sched.mcpu > runtime·sched.mcpumax) { |
