|
From 241164a201e03acce363e902fb25e452827211f0 Mon Sep 17 00:00:00 2001
|
|
From: Fabian Mauchle <fabian.mauchle@switch.ch>
|
|
Date: Mon, 26 Jul 2021 14:12:15 +0200
|
|
Subject: [PATCH] fix setstacksize for glibc 2.34 (fix #91)
|
|
|
|
---
|
|
ChangeLog | 1 +
|
|
radsecproxy.c | 10 ++++++++--
|
|
radsecproxy.h | 12 +++---------
|
|
3 files changed, 12 insertions(+), 11 deletions(-)
|
|
|
|
--- a/radsecproxy.c
|
|
+++ b/radsecproxy.c
|
|
@@ -3031,6 +3031,7 @@ int createpidfile(const char *pidfile) {
|
|
int radsecproxy_main(int argc, char **argv) {
|
|
pthread_t sigth;
|
|
sigset_t sigset;
|
|
+ size_t stacksize;
|
|
struct list_node *entry;
|
|
uint8_t foreground = 0, pretend = 0, loglevel = 0;
|
|
char *configfile = NULL, *pidfile = NULL;
|
|
@@ -3042,8 +3043,13 @@ int radsecproxy_main(int argc, char **ar
|
|
|
|
if (pthread_attr_init(&pthread_attr))
|
|
debugx(1, DBG_ERR, "pthread_attr_init failed");
|
|
- if (pthread_attr_setstacksize(&pthread_attr, PTHREAD_STACK_SIZE))
|
|
- debugx(1, DBG_ERR, "pthread_attr_setstacksize failed");
|
|
+#if defined(PTHREAD_STACK_MIN)
|
|
+ stacksize = THREAD_STACK_SIZE > PTHREAD_STACK_MIN ? THREAD_STACK_SIZE : PTHREAD_STACK_MIN;
|
|
+#else
|
|
+ stacksize = THREAD_STACK_SIZE;
|
|
+#endif
|
|
+ if (pthread_attr_setstacksize(&pthread_attr, stacksize))
|
|
+ debug(DBG_WARN, "pthread_attr_setstacksize failed! Using system default. Memory footprint might be increased!");
|
|
#if defined(HAVE_MALLOPT)
|
|
if (mallopt(M_TRIM_THRESHOLD, 4 * 1024) != 1)
|
|
debugx(1, DBG_ERR, "mallopt failed");
|
|
--- a/radsecproxy.h
|
|
+++ b/radsecproxy.h
|
|
@@ -28,15 +28,9 @@
|
|
#define STATUS_SERVER_PERIOD 25
|
|
#define IDLE_TIMEOUT 300
|
|
|
|
-/* We want PTHREAD_STACK_SIZE to be 32768, but some platforms
|
|
- * have a higher minimum value defined in PTHREAD_STACK_MIN. */
|
|
-#define PTHREAD_STACK_SIZE 32768
|
|
-#if defined(PTHREAD_STACK_MIN)
|
|
-#if PTHREAD_STACK_MIN > PTHREAD_STACK_SIZE
|
|
-#undef PTHREAD_STACK_SIZE
|
|
-#define PTHREAD_STACK_SIZE PTHREAD_STACK_MIN
|
|
-#endif
|
|
-#endif
|
|
+/* Target value for stack size.
|
|
+ * Some platforms might define higher minimums in PTHREAD_STACK_MIN. */
|
|
+#define THREAD_STACK_SIZE 32768
|
|
|
|
/* For systems that only support RFC 2292 Socket API, but not RFC 3542
|
|
* like Cygwin */
|