Блог пользователя Slow_But_Determined

Автор Slow_But_Determined, история, 5 лет назад, По-английски

I usually write:

'#define N 1000000

vector adj[N];

But when I run it locally, I get segmentation fault due to stack size being too small, so I end up reducing N to something like 10000 and forget to change it back again before submitting, causing unnecessary penalties.

So is there anyway to permanently increase stack size in ubuntu?

g++ -Wl,--stack=268435456 file.cpp works in Windows.

ulimit -s unlimited only increases stack size for the specific terminal

UPD:

Thanks a lot for your replies, I ended up spilling water on my laptop :(

I'll try the suggestions when (if?) My laptop gets dried.

  • Проголосовать: нравится
  • +24
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

Add ulimit -s unlimited to .bashrc?

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Thanks, but that works only if I run through a terminal. Is there any way to make it persistent even when running through sublime text?

    • »
      »
      »
      5 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

      Here is the build file I am using for Sublime Text Build 3176 on Ubuntu 18.04.1 LTS.

      You just have to add ulimit -s unlimited; to Run command.

    • »
      »
      »
      5 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      you can try .profile. As far as I remember it is sourced during graphical login too.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

you can do that from code (with smth like this)

»
5 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Why not modify the /etc/security/limits.conf file? A line like

your-username     soft    stack    1048576

should set your (soft) stack limit for all your processes to 1 GB by default. (The change might require a log-out/log-in in order to take effect.) For more info, please refer to man limits.conf.

  • »
    »
    5 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Why not modify the /etc/security/limits.conf file?

    Why modify such things globally?

    As for me, I am using Geany, and wrote something like

    bash -c 'ulimit -s 262144 && ulimit -v 1048576 && time "./%e"'
    

    for running programs.

    The first part sets the stack size, the seconds one sets the memory limit (to prevent memory from exhausting because of some bugs), the last one allows to see the total time.

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by Slow_But_Determined (previous revision, new revision, compare).