bash: ulimit: core file size: cannot modify limit: Operation not permitted

86,726

Solution 1

Grep for a hard limit setting in your bash initialization files. From the bash man page.

A hard limit cannot be increased once it is set; a soft limit may be increased up to the value of the hard limit.

The hard limit is set via the ulimit -H flag. It may be set in /etc/bash* or /etc/profile* files. Look for a ulimit -Hc setting.

Solution 2

I had this happen to me when I used dropbear as an SSH server. Apparently, dropbear sets some hard limits before spawning your shell.

Switching to OpenSSH solved the problem.

Share:
86,726

Related videos on Youtube

ant2009
Author by

ant2009

Updated on September 17, 2022

Comments

  • ant2009
    ant2009 3 months

    Fedora 12 gcc 4.4.1

    I am doing some programming, and my program gave me a stack dump.

    However, there is no core file for me to examine.

    So I did:

    ulimit -c unlimited
    

    and got this error message:

    bash: ulimit: core file size: cannot modify limit: Operation not permitted
    

    I also tried setting ulimit to 50000 and still got the same error.

    The results of ulimit -a:

    $ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 12275
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 1024
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
  • Sundae
    Sundae over 7 years
    Indeed. Right in the start of main() there's a call to disallow_core(), which calls setrlimit(2). For security reasons of course, but there must be a better way. github.com/mkj/dropbear/blob/master/svr-main.c
  • Jim
    Jim over 3 years
    man ulimit: If neither -H nor -S is specified, both the soft and hard limits are set. So looking for -H or -S isn't necessarily going to lead you to the correct solution. Just grep for ulimit and then figure out if -H or -S or both implicitly are set. Of course, this is a decade later so the behavior or man pages might have been updated since the original question/answer.