On Wed, Aug 31, 2016 at 1:24 AM, Andreas Schwab <sch...@suse.de> wrote: > On ia64, MINSIGSTKSZ is 128K. > > Andreas. > > * libgo/runtime/runtime.c (runtime_mpreinit): Increase stack size to > 128K. > --- > libgo/runtime/runtime.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libgo/runtime/runtime.c b/libgo/runtime/runtime.c > index c7d33bc..e8eb957 100644 > --- a/libgo/runtime/runtime.c > +++ b/libgo/runtime/runtime.c > @@ -272,7 +272,7 @@ runtime_tickspersecond(void) > void > runtime_mpreinit(M *mp) > { > - mp->gsignal = runtime_malg(32*1024, (byte**)&mp->gsignalstack, > &mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K > + mp->gsignal = runtime_malg(128*1024, (byte**)&mp->gsignalstack, > &mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K, ia64 >=128K > mp->gsignal->m = mp; > }
Thanks. There doesn't seem to be a need to increase the stack size on all architectures, so I applied this patch. Bootstrapped and ran Go tests on x86_64-pc-linux-gnu, which I admit means little. Committed to mainline. Let me know if it doesn't fix the problem on ia64 (does Go really work on ia64?). Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 239872) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -394486a1cec9bbb81216311ed153179d9fe1c2c5 +c8cf90f2daf62428ca6aa0b5674572cd99f25fe3 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/runtime/runtime.c =================================================================== --- libgo/runtime/runtime.c (revision 239872) +++ libgo/runtime/runtime.c (working copy) @@ -272,7 +272,14 @@ runtime_tickspersecond(void) void runtime_mpreinit(M *mp) { - mp->gsignal = runtime_malg(32*1024, (byte**)&mp->gsignalstack, &mp->gsignalstacksize); // OS X wants >=8K, Linux >=2K + int32 stacksize = 32 * 1024; // OS X wants >=8K, Linux >=2K + +#ifdef SIGSTKSZ + if(stacksize < SIGSTKSZ) + stacksize = SIGSTKSZ; +#endif + + mp->gsignal = runtime_malg(stacksize, (byte**)&mp->gsignalstack, &mp->gsignalstacksize); mp->gsignal->m = mp; }