diff options
-rw-r--r-- | init.cfg | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -153,6 +153,23 @@ require_openat_support_() fi } +# Return true if command runs with the +# ulimit specified in the first argument +ulimit_supported_() +{ + local v + v="$1" + shift + + ( + # Try to disable core dumps which may + # occur with memory constraints + trap '' SEGV; ulimit -c 0; + + ulimit -v $v && "$@" + ) >/dev/null 2>&1 +} + # Determine the minimum required VM limit to run the given command. # Output that value to stdout ... to be used by the caller. # Return 0 in case of success, and a non-Zero value otherwise. @@ -166,11 +183,11 @@ get_min_ulimit_v_() page_size=$(($page_size / 1024)) for v in $( seq 5000 5000 50000 ); do - if ( ulimit -v $v && "$@" ) >/dev/null; then + if ulimit_supported_ $v "$@"; then local prev_v prev_v=$v for v in $( seq $(($prev_v-1000)) -1000 1000 ); do - ( ulimit -v $v && "$@" ) >/dev/null || \ + ulimit_supported_ $v "$@" || { ret_v=$((prev_v + $page_size)) echo $ret_v |