If the user would set bigger reserved stack size then what
is allowed in resources (ulimit -s), then he would get coredump
So avoid coredump and ignore creation of such large stack size
(lvm should work properly, with just 64KB, so the option could
be eliminated).
static void _allocate_memory(void)
{
void *stack_mem, *temp_malloc_mem;
+ struct rlimit limit;
- if ((stack_mem = alloca(_size_stack)))
+ /* Check if we could preallocate requested stack */
+ if ((getrlimit (RLIMIT_STACK, &limit) == 0) &&
+ ((_size_stack * 2) < limit.rlim_cur) &&
+ ((stack_mem = alloca(_size_stack))))
_touch_memory(stack_mem, _size_stack);
if ((temp_malloc_mem = malloc(_size_malloc_tmp)))