[master] 6e6e7e7 set the sigaltstack for each thread - SunOS needs it
Nils Goroll
nils.goroll at uplex.de
Mon Sep 4 20:01:06 CEST 2017
commit 6e6e7e738d991ba5baf4d39b9b9f22836215622b
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Mon Sep 4 19:48:26 2017 +0200
set the sigaltstack for each thread - SunOS needs it
Ref: #2396
diff --git a/bin/varnishd/cache/cache_wrk.c b/bin/varnishd/cache/cache_wrk.c
index 41d2849..cf2948b 100644
--- a/bin/varnishd/cache/cache_wrk.c
+++ b/bin/varnishd/cache/cache_wrk.c
@@ -41,6 +41,11 @@
#include "hash/hash_slinger.h"
+#ifdef HAVE_SIGALTSTACK
+#include <signal.h>
+extern stack_t altstack;
+#endif
+
static void Pool_Work_Thread(struct pool *pp, struct worker *wrk);
/*--------------------------------------------------------------------
@@ -401,6 +406,9 @@ pool_thread(void *priv)
struct pool_info *pi;
CAST_OBJ_NOTNULL(pi, priv, POOL_INFO_MAGIC);
+#ifdef HAVE_SIGALTSTACK
+ AZ(sigaltstack(&altstack, NULL));
+#endif
WRK_Thread(pi->qp, pi->stacksize, cache_param->workspace_thread);
FREE_OBJ(pi);
return (NULL);
diff --git a/bin/varnishd/mgt/mgt_child.c b/bin/varnishd/mgt/mgt_child.c
index 2952a81..76103e2 100644
--- a/bin/varnishd/mgt/mgt_child.c
+++ b/bin/varnishd/mgt/mgt_child.c
@@ -84,6 +84,10 @@ static struct vlu *child_std_vlu;
static struct vsb *child_panic = NULL;
+#ifdef HAVE_SIGALTSTACK
+stack_t altstack;
+#endif
+
static void mgt_reap_child(void);
/*=====================================================================
@@ -365,15 +369,14 @@ mgt_launch_child(struct cli *cli)
(void)sigaction(SIGABRT, &sa, NULL);
#ifdef HAVE_SIGALTSTACK
- stack_t ss;
size_t sz = SIGSTKSZ + 4096;
if (sz < mgt_param.wthread_stacksize)
sz = mgt_param.wthread_stacksize;
- ss.ss_sp = malloc(sz);
- AN(ss.ss_sp);
- ss.ss_size = sz;
- ss.ss_flags = 0;
- AZ(sigaltstack(&ss, NULL));
+ altstack.ss_sp = malloc(sz);
+ AN(altstack.ss_sp);
+ altstack.ss_size = sz;
+ altstack.ss_flags = 0;
+ AZ(sigaltstack(&altstack, NULL));
sa.sa_flags |= SA_ONSTACK;
#endif
(void)sigaction(SIGSEGV, &sa, NULL);
More information about the varnish-commit
mailing list