95 lines
3.4 KiB
Bash
Executable File
95 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# /* ******************************************************************************
|
|
# *
|
|
# *
|
|
# * this program and the accompanying materials are made available under the
|
|
# * terms of the apache license, version 2.0 which is available at
|
|
# * https://www.apache.org/licenses/license-2.0.
|
|
# *
|
|
# * see the notice file distributed with this work for additional
|
|
# * information regarding copyright ownership.
|
|
# * unless required by applicable law or agreed to in writing, software
|
|
# * distributed under the license is distributed on an "as is" basis, without
|
|
# * warranties or conditions of any kind, either express or implied. see the
|
|
# * license for the specific language governing permissions and limitations
|
|
# * under the license.
|
|
# *
|
|
# * spdx-license-identifier: apache-2.0
|
|
# ******************************************************************************/
|
|
#
|
|
|
|
set -exo pipefail
|
|
java_call="java "
|
|
script_dir=$( cd -- "$( dirname -- "${bash_source[0]}" )" &> /dev/null && pwd )
|
|
echo "RUNNING WITH CUSTOM JVM"
|
|
echo "TEST RUNNER PREFIX: $test_runner_prefix"
|
|
#source "${script_dir}/env.sh"
|
|
# find libjvm.so
|
|
if [[ -n $libjvm_so ]]; then
|
|
libjvm_path=$libjvm_so
|
|
else
|
|
java_real_path=$(readlink -f $(which java))
|
|
java_home=$(dirname $(dirname $java_real_path))
|
|
libjvm_path=$(find $java_home -type f -name "libjvm.so" | grep "/server/" | head -n 1)
|
|
fi
|
|
|
|
# if libjvm.so not found, terminate
|
|
if [[ -z $libjvm_path ]]; then
|
|
echo "libjvm.so not found"
|
|
exit 1
|
|
fi
|
|
|
|
# if test_runner_prefix is not empty and contains "valgrind"
|
|
if [[ -n $TEST_RUNNER_PREFIX && TEST_RUNNER_PREFIX =~ "valgrind" ]]; then
|
|
# create a file to store the suppression information
|
|
suppression_file="valgrind_suppressions.supp"
|
|
|
|
# if suppression file exists, delete it
|
|
if [[ -f $suppression_file ]]; then
|
|
rm -f $suppression_file
|
|
fi
|
|
|
|
# generate the suppression file for all memcheck error types except param
|
|
echo "generating valgrind suppression file at $suppression_file..."
|
|
for error_type in addr1 addr2 addr4 addr8 value1 value2 value4 value8 jump cond
|
|
do
|
|
cat << eof >> $suppression_file
|
|
{
|
|
suppresslibjvm${error_type}
|
|
memcheck:${error_type}
|
|
...
|
|
obj:$libjvm_path
|
|
}
|
|
eof
|
|
done
|
|
|
|
echo "valgrind suppression file has been generated."
|
|
|
|
# check if "--suppressions" already exists in test_runner_prefix
|
|
if [[ $TEST_RUNNER_PREFIX != *"--suppressions"* ]]; then
|
|
$TEST_RUNNER_PREFIX="$TEST_RUNNER_PREFIX --suppressions=$suppression_file --track-origins=yes --keep-stacktraces=alloc-and-free --error-limit=no"
|
|
fi
|
|
|
|
java_call="${java_call} -Djava.compiler=none"
|
|
fi
|
|
# if test_runner_prefix is not empty and contains "compute-sanitizer"
|
|
if [[ -n $TEST_RUNNER_PREFIX && $TEST_RUNNER_PREFIX =~ "compute-sanitizer" ]]; then
|
|
TEST_RUNNER_PREFIX="${TEST_RUNNER_PREFIX} --tool=memcheck --report-api-errors all --show-backtrace yes --print-limit 1000 "
|
|
# set default options for compute-sanitizer if none are specified
|
|
# add jvm option to disable jit compilation to help with debugging
|
|
java_call="${java_call} -Djava.compiler=none"
|
|
|
|
echo "running with cuda compute-sanitizer"
|
|
fi
|
|
export CUDA_VISIBLE_DEVICES=1
|
|
# print the final command
|
|
echo "$TEST_RUNNER_PREFIX $java_call $@"
|
|
$TEST_RUNNER_PREFIX $java_call "$@"
|
|
|
|
# if test_runner_prefix is not empty and contains "valgrind", remove the suppression file
|
|
if [[ -n $TEST_RUNNER_PREFIX && $TEST_RUNNER_PREFIX =~ "valgrind" ]]; then
|
|
rm -f $suppression_file
|
|
fi
|