]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: higher goroutine arg limit, clearer error
authorRuss Cox <rsc@golang.org>
Wed, 27 Jul 2011 16:41:46 +0000 (12:41 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 27 Jul 2011 16:41:46 +0000 (12:41 -0400)
Fixes #591.

R=ken2
CC=golang-dev
https://golang.org/cl/4803054

src/pkg/runtime/proc.c

index 13bc52bb68249eeb6599f3645993c91118f1d4ef..ffaf44ddd8fb7ab2bb43d644f5d4ee358eae41dd 100644 (file)
@@ -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();