From fc4eaccf101f7dab11074ef9af9b2ca71ea3e6b0 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 31 Aug 2016 13:59:03 +0000 Subject: [PATCH] runtime: make gsignal stack at least SIGSTKSZ bytes The default stack size for the gsignal goroutine, 32K, is not enough on ia64. Make sure that the stack size is at least SIGSTKSZ. Reviewed-on: https://go-review.googlesource.com/28224 From-SVN: r239894 --- gcc/go/gofrontend/MERGE | 2 +- libgo/runtime/runtime.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 633dfcfdd8a..71a9f5bcd5e 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -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. diff --git a/libgo/runtime/runtime.c b/libgo/runtime/runtime.c index c7d33bcef4c..9abd096555d 100644 --- a/libgo/runtime/runtime.c +++ b/libgo/runtime/runtime.c @@ -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; }