emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master e7a5b1b: Require a larger stack size for threads (b


From: Paul Eggert
Subject: [Emacs-diffs] master e7a5b1b: Require a larger stack size for threads (bug#30364)
Date: Tue, 27 Feb 2018 12:28:35 -0500 (EST)

branch: master
commit e7a5b1bb671f0bc1c4dfbbbfc7b5ba1de1f39897
Author: Aaron Jensen <address@hidden>
Commit: Paul Eggert <address@hidden>

    Require a larger stack size for threads (bug#30364)
    
    * 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 | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/systhread.c b/src/systhread.c
index 3f162a2..e972ed3 100644
--- a/src/systhread.c
+++ b/src/systhread.c
@@ -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;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]