#define PAL_INITIALIZE_STD_HANDLES 0x04
#define PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER 0x08
#define PAL_INITIALIZE_DEBUGGER_EXCEPTIONS 0x10
+#define PAL_INITIALIZE_ENSURE_STACK_SIZE 0x20
// PAL_Initialize() flags
#define PAL_INITIALIZE (PAL_INITIALIZE_SYNC_THREAD | PAL_INITIALIZE_STD_HANDLES)
#define PAL_INITIALIZE_DLL PAL_INITIALIZE_NONE
// PAL_InitializeCoreCLR() flags
-#define PAL_INITIALIZE_CORECLR (PAL_INITIALIZE | PAL_INITIALIZE_EXEC_ALLOCATOR | PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER | PAL_INITIALIZE_DEBUGGER_EXCEPTIONS)
+#define PAL_INITIALIZE_CORECLR (PAL_INITIALIZE | PAL_INITIALIZE_EXEC_ALLOCATOR | PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER | PAL_INITIALIZE_DEBUGGER_EXCEPTIONS | PAL_INITIALIZE_ENSURE_STACK_SIZE)
typedef DWORD (PALAPI *PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
if(CLR_CMAKE_PLATFORM_ALPINE_LINUX)
# Setting RLIMIT_NOFILE breaks debugging of coreclr on Alpine Linux for some reason
add_definitions(-DDONT_SET_RLIMIT_NOFILE)
+ # On Alpine Linux, we need to ensure that the reported stack range for the primary thread is
+ # larger than the initial committed stack size.
+ add_definitions(-DENSURE_PRIMARY_STACK_SIZE)
endif(CLR_CMAKE_PLATFORM_ALPINE_LINUX)
# turn off capability to remove unused functions (which was enabled in debug build with sanitizers)
return Initialize(0, NULL, PAL_INITIALIZE_DLL);
}
-#ifndef __GLIBC__
+#ifdef ENSURE_PRIMARY_STACK_SIZE
/*++
Function:
EnsureStackSize
volatile uint8_t *s = (uint8_t *)_alloca(stackSize);
*s = 0;
}
-#endif // __GLIBC__
+#endif // ENSURE_PRIMARY_STACK_SIZE
/*++
Function:
}
}
-#ifndef __GLIBC__
+#ifdef ENSURE_PRIMARY_STACK_SIZE
if (g_defaultStackSize == 0)
{
// Set the default minimum stack size for MUSL to the same value as we
// use on Windows.
g_defaultStackSize = 1536 * 1024;
}
-#endif // __GLIBC__
+#endif // ENSURE_PRIMARY_STACK_SIZE
}
/*++
InitializeDefaultStackSize();
-#ifndef __GLIBC__
- EnsureStackSize(g_defaultStackSize);
-#endif // __GLIBC__
+#ifdef ENSURE_PRIMARY_STACK_SIZE
+ if (flags & PAL_INITIALIZE_ENSURE_STACK_SIZE)
+ {
+ EnsureStackSize(g_defaultStackSize);
+ }
+#endif // ENSURE_PRIMARY_STACK_SIZE
// Initialize the TLS lookaside cache
if (FALSE == TLSInitialize())