14

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,284
  • 7
  • 29
  • 27

3 Answers3

14

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
  • 40,496
  • 12
  • 101
  • 170
LiraNuna
  • 64,916
  • 15
  • 117
  • 140
  • 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... – 15 Volts Nov 28 '20 at 13:33
1

I use that in my compiler script:

CFLAGS += -Wl,--stack,10485760

Tanguy
  • 2,227
  • 1
  • 18
  • 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,128
  • 18
  • 19