aboutsummaryrefslogtreecommitdiffstats
path: root/main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch')
-rw-r--r--main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch114
1 files changed, 114 insertions, 0 deletions
diff --git a/main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch b/main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch
new file mode 100644
index 0000000000..c763780f1a
--- /dev/null
+++ b/main/rsyslog/8e4bfe19b5d971f5df8520faf8753381b58e7ca7.patch
@@ -0,0 +1,114 @@
+From 8e4bfe19b5d971f5df8520faf8753381b58e7ca7 Mon Sep 17 00:00:00 2001
+From: Rainer Gerhards <rgerhards@adiscon.com>
+Date: Fri, 29 Apr 2016 08:09:44 +0200
+Subject: [PATCH] core: set default stack size to 4MiB
+
+Note that this is below the usual 10MiB default, but should cause
+no issues (output threads already use 4MiB stack size, for example).
+This also addresses issues introduced by micro-libc's which only
+provide very limited stack space by default.
+
+closes https://github.com/rsyslog/rsyslog/issues/996
+---
+ runtime/rsyslog.c | 7 ++++---
+ runtime/rsyslog.h | 2 +-
+ runtime/stream.c | 4 ----
+ threads.c | 9 +--------
+ 4 files changed, 6 insertions(+), 16 deletions(-)
+
+diff --git a/runtime/rsyslog.c b/runtime/rsyslog.c
+index c6d70d4..c23d9f7 100644
+--- a/runtime/rsyslog.c
++++ b/runtime/rsyslog.c
+@@ -35,7 +35,7 @@
+ *
+ * Module begun 2008-04-16 by Rainer Gerhards
+ *
+- * Copyright 2008-2014 Rainer Gerhards and Adiscon GmbH.
++ * Copyright 2008-2016 Rainer Gerhards and Adiscon GmbH.
+ *
+ * This file is part of the rsyslog runtime library.
+ *
+@@ -83,9 +83,9 @@
+ #include "atomic.h"
+ #include "srUtils.h"
+
++pthread_attr_t default_thread_attr;
+ #ifdef HAVE_PTHREAD_SETSCHEDPARAM
+ struct sched_param default_sched_param;
+-pthread_attr_t default_thread_attr;
+ int default_thr_sched_policy;
+ #endif
+
+@@ -145,11 +145,12 @@ rsrtInit(char **ppErrObj, obj_if_t *pObjIF)
+ stdlog_init(0);
+ stdlog_hdl = NULL;
+ #endif
++ CHKiRet(pthread_attr_init(&default_thread_attr));
++ pthread_attr_setstacksize(&default_thread_attr, 4096*1024);
+ #ifdef HAVE_PTHREAD_SETSCHEDPARAM
+ CHKiRet(pthread_getschedparam(pthread_self(),
+ &default_thr_sched_policy,
+ &default_sched_param));
+- CHKiRet(pthread_attr_init(&default_thread_attr));
+ CHKiRet(pthread_attr_setschedpolicy(&default_thread_attr,
+ default_thr_sched_policy));
+ CHKiRet(pthread_attr_setschedparam(&default_thread_attr,
+diff --git a/runtime/rsyslog.h b/runtime/rsyslog.h
+index 542343d..87198f3 100644
+--- a/runtime/rsyslog.h
++++ b/runtime/rsyslog.h
+@@ -532,9 +532,9 @@ typedef enum rsObjectID rsObjID;
+ #define RSFREEOBJ(x) {(x)->OID = OIDrsFreed; free(x);}
+ #endif
+
++extern pthread_attr_t default_thread_attr;
+ #ifdef HAVE_PTHREAD_SETSCHEDPARAM
+ extern struct sched_param default_sched_param;
+-extern pthread_attr_t default_thread_attr;
+ extern int default_thr_sched_policy;
+ #endif
+
+diff --git a/runtime/stream.c b/runtime/stream.c
+index ae3efaa..97b0ccd 100644
+--- a/runtime/stream.c
++++ b/runtime/stream.c
+@@ -968,11 +968,7 @@ static rsRetVal strmConstructFinalize(strm_t *pThis)
+ pThis->pIOBuf = pThis->asyncBuf[0].pBuf;
+ pThis->bStopWriter = 0;
+ if(pthread_create(&pThis->writerThreadID,
+-#ifdef HAVE_PTHREAD_SETSCHEDPARAM
+ &default_thread_attr,
+-#else
+- NULL,
+-#endif
+ asyncWriterThread, pThis) != 0)
+ DBGPRINTF("ERROR: stream %p cold not create writer thread\n", pThis);
+ } else {
+diff --git a/threads.c b/threads.c
+index b6cab1b..2d83402 100644
+--- a/threads.c
++++ b/threads.c
+@@ -235,7 +235,6 @@ static void* thrdStarter(void *arg)
+ ENDfunc
+ pthread_exit(0);
+ }
+-
+ /* Start a new thread and add it to the list of currently
+ * executing threads. It is added at the end of the list.
+ * rgerhards, 2007-12-14
+@@ -253,13 +252,7 @@ rsRetVal thrdCreate(rsRetVal (*thrdMain)(thrdInfo_t*), rsRetVal(*afterRun)(thrdI
+ pThis->pAfterRun = afterRun;
+ pThis->bNeedsCancel = bNeedsCancel;
+ pThis->name = ustrdup(name);
+- pthread_create(&pThis->thrdID,
+-#ifdef HAVE_PTHREAD_SETSCHEDPARAM
+- &default_thread_attr,
+-#else
+- NULL,
+-#endif
+- thrdStarter, pThis);
++ pthread_create(&pThis->thrdID, &default_thread_attr, thrdStarter, pThis);
+ CHKiRet(llAppend(&llThrds, NULL, pThis));
+
+ finalize_it: