You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
2.1 KiB

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 */