From: Russ Cox Date: Wed, 27 Jul 2011 16:41:46 +0000 (-0400) Subject: runtime: higher goroutine arg limit, clearer error X-Git-Tag: weekly.2011-07-29~43 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=100a034120e7f68ba5ca687b98bb930f4f539b9b;p=gostls13.git runtime: higher goroutine arg limit, clearer error Fixes #591. R=ken2 CC=golang-dev https://golang.org/cl/4803054 --- diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index 13bc52bb68..ffaf44ddd8 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -1054,8 +1054,13 @@ runtime·newproc1(byte *fn, byte *argp, int32 narg, int32 nret, void *callerpc) //printf("newproc1 %p %p narg=%d nret=%d\n", fn, argp, narg, nret); siz = narg + nret; siz = (siz+7) & ~7; - if(siz > 1024) - runtime·throw("runtime.newproc: too many args"); + + // We could instead create a secondary stack frame + // and make it look like goexit was on the original but + // the call to the actual goroutine function was split. + // Not worth it: this is almost always an error. + if(siz > StackMin - 1024) + runtime·throw("runtime.newproc: function arguments too large for new goroutine"); schedlock();