]> git.eshelyaron.com Git - emacs.git/commitdiff
Require a larger stack size for threads (bug#30364)
authorAaron Jensen <aaronjensen@gmail.com>
Tue, 27 Feb 2018 17:15:40 +0000 (09:15 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 27 Feb 2018 17:28:30 +0000 (09:28 -0800)
* src/systhread.c (sys_thread_create) [THREADS_ENABLED && HAVE_PTHREAD]:
Require at least 8MB stack size for x64 and 4MB for x86.

src/systhread.c

index 3f162a2bcbfde5942d33eb09ca671507bb52845f..e972ed398ac6accce3d808c4a95e5c9bfed968c7 100644 (file)
@@ -177,6 +177,13 @@ sys_thread_create (sys_thread_t *thread_ptr, const char *name,
   if (pthread_attr_init (&attr))
     return 0;
 
+  /* 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);
+
   if (!pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED))
     {
       result = pthread_create (thread_ptr, &attr, func, arg) == 0;