From 100a034120e7f68ba5ca687b98bb930f4f539b9b Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 27 Jul 2011 12:41:46 -0400 Subject: [PATCH] runtime: higher goroutine arg limit, clearer error Fixes #591. R=ken2 CC=golang-dev https://golang.org/cl/4803054 --- src/pkg/runtime/proc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index 13bc52bb682..ffaf44ddd8f 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();