From ca8afa7672b830d6ed570c21599f3eadb0958d79 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 28 Feb 2018 16:27:06 -0800 Subject: [PATCH] Require a larger stack size for threads on macOS (bug#30364) * src/systhread.c (sys_thread_create) [THREADS_ENABLED && HAVE_PTHREAD && DARWIN_OS]: Require at least 8MB stack size for x64 and 4MB for x86 on macOS. Do not merge to master. --- src/systhread.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/systhread.c b/src/systhread.c index 4ffb7db143a..c4dcc4e9069 100644 --- a/src/systhread.c +++ b/src/systhread.c @@ -165,6 +165,15 @@ sys_thread_create (sys_thread_t *thread_ptr, const char *name, if (pthread_attr_init (&attr)) return 0; +#ifdef DARWIN_OS + /* Avoid crash on macOS with deeply nested GC (Bug#30364). */ + size_t stack_size; + size_t required_stack_size = sizeof (void *) * 1024 * 1024; + if (pthread_attr_getstacksize (&attr, &stack_size) == 0 + && stack_size < required_stack_size) + pthread_attr_setstacksize (&attr, required_stack_size); +#endif + if (!pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED)) { result = pthread_create (thread_ptr, &attr, func, arg) == 0; -- 2.39.5