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.
This commit is contained in:
parent
fd50238748
commit
ca8afa7672
1 changed files with 9 additions and 0 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue