]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
tests: avoid coredumps when determining memory limits
authorPádraig Brady <P@draigBrady.com>
Thu, 14 Jan 2016 01:52:34 +0000 (01:52 +0000)
committerPádraig Brady <P@draigBrady.com>
Fri, 15 Jan 2016 14:14:02 +0000 (14:14 +0000)
* init.cfg (get_min_ulimit_v_): Refactor ulimit call to...
(ulimit_supported_): ...here, and add calls to avoid coredumps.

init.cfg

index e0ee1bc677e0d50b5765e4ce780a3349959bd252..108fd206bfe6c26e4f0ae40a8f425ce4e23bc6e8 100644 (file)
--- a/init.cfg
+++ b/init.cfg
@@ -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