Paul Jurczak
Paul Jurczak

Reputation: 8127

Setting stack size with g++-9 has no effect

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:

Upvotes: 4

Views: 654

Answers (1)

Paul Jurczak
Paul Jurczak

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

Related Questions