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 633dfcfdd8aa..71a9f5bcd5e7 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 c7d33bcef4c6..9abd096555d2 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; } -- 2.47.3