tests: avoid coredumps when determining memory limits

* init.cfg (get_min_ulimit_v_): Refactor ulimit call to...
(ulimit_supported_): ...here, and add calls to avoid coredumps.
This commit is contained in:
Pádraig Brady 2016-01-14 01:52:34 +00:00
parent 611e7e02bf
commit 89f7adb158

View File

@ -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