Reputation: 8127
I'm building a test program with g++ 9.3.0 on Ubuntu 18.04 x64 using this linker command:
/usr/bin/g++-9 -O3 -DNDEBUG -Wl,-z,stack-size=268435456 CMakeFiles/af.dir/main.cpp.o -o af
I'm testing increased stack requirements with this function:
float f() {
float a[3'000'000];
return a[42];
}
and results indicate a standard 8MB stack regardless of the stack-size
linker option value. What is the way to increase the stack size?
EDIT
The test is as follows:
float a[3'000'000];
causes Segmentation fault (core dumped)
float a[2'000'000];
returns 0
as expectedUpvotes: 4
Views: 654
Reputation: 8127
It seems that setting stack size with g++ 9.3.0 linker options on Ubuntu 18.04 x64 is not possible. As suggested in comments, I settled for a run-time option:
#include <sys/resource.h>
#include <fmt/format.h>
int main() {
if (struct rlimit rl{1<<28, 1l<<33}; setrlimit(RLIMIT_STACK, &rl))
fmt::print("Can not set stack size! (errno = {})\n", errno);
else
fmt::print("Stack size: {}MiB up to {}GiB\n", rl.rlim_cur/(1<<20), rl.rlim_max/(1<<30));
...
Upvotes: 2