13

I have large Boost/Spirit metaprogram that is blowing gcc's stack when I try to compile it.

How can I increase gcc's stack size, so I can compile this program?

Note: There's no infinite recursion going on, but there is enough incidental recursion to exhaust gcc's stack.

Jeff Leonard
  • 3,214
  • 7
  • 28
  • 27

3 Answers3

12

On Linux, you can expand the stack size in /etc/security/limits.conf.

You can check your current stack size by using

$ ulimit -s
8192

Then expand the stack to be double than that:

youruser    soft    stack    16384

And then relog.

This will increase stack size for all executable you're running, not just GCC's.

Crashworks
  • 39,360
  • 12
  • 98
  • 169
LiraNuna
  • 61,525
  • 14
  • 115
  • 138
  • 5
    If it's a soft-limit, it can be increased without re-logging in by entering ulimit -s . This only applies for the current shell of course. – bdonlan Jul 21 '09 at 01:17
  • I just used some very big value: `sourav soft stack 2000000`. Then I was unable to launch apps like chromium and falkon and edge browsers on Linux! They were all writing 10 GB to my SSD when I launched them... – S.Goswami Nov 28 '20 at 13:33
1

I use that in my compiler script:

CFLAGS += -Wl,--stack,10485760

Tanguy
  • 2,087
  • 1
  • 17
  • 8
0

The stack size can be configured during linking. You should look at details regarding the linker scripts. That will only change the stack size for your single programme.

sybreon
  • 3,126
  • 17
  • 19