diff --git a/coin/provisioning/common/linux/enable_test_stacktraces.sh b/coin/provisioning/common/linux/enable_test_stacktraces.sh new file mode 100755 index 00000000..ee9d4d23 --- /dev/null +++ b/coin/provisioning/common/linux/enable_test_stacktraces.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +### Enable automatic stacktraces in case of fatal errors in QTest. +# This requires that gdb can be found in PATH, and that no +# kernel security settings like yama.ptrace_scope prevent it. + + +PROVISIONING_DIR="$(dirname "$0")/../.." +source "$PROVISIONING_DIR/common/unix/common.sourced.sh" + + +f="/etc/sysctl.d/10-ptrace.conf" +if [ -f $f ] +then + echo "Modifying $f ..." + sudo sed -i '/^kernel\.yama\.ptrace_scope *= *[1-9]$/s/[1-9]$/0/' $f + # Reload the modified setting, so that we can verify it right afterwards. + sudo sysctl -p $f +fi + +# Verify that yama.ptrace_scope = 0, if it's supported by the kernel. +ptrace_scope_value=`sudo sysctl kernel.yama.ptrace_scope 2>/dev/null \ + | sed -E 's/.*([0-9])$/\1/'` +if [ -n "$ptrace_scope_value" ] && [ "$ptrace_scope_value" != 0 ] +then + fatal "kernel.yama.ptrace_scope = $ptrace_scope_value \ + which means that QTest automatic stacktraces will not work" +else + echo kernel.yama.ptrace_scope = "$ptrace_scope_value" +fi + + +$CMD_PKG_INSTALL gdb diff --git a/coin/provisioning/common/unix/common.sourced.sh b/coin/provisioning/common/unix/common.sourced.sh index e93c1cba..c15d9453 100755 --- a/coin/provisioning/common/unix/common.sourced.sh +++ b/coin/provisioning/common/unix/common.sourced.sh @@ -108,7 +108,7 @@ set_common_environment () { uname_m="$(uname -m)" case "$uname_m" in x86_64|amd64) PROVISIONING_ARCH=amd64 ;; - arm64) PROVISIONING_ARCH=arm64 ;; + aarch64|arm64)PROVISIONING_ARCH=arm64 ;; i[3456]86) PROVISIONING_ARCH=x86 ;; *) fatal "Unknown architecture in uname: $uname_m" 43 ;; esac diff --git a/coin/provisioning/qtci-linux-Debian-11.6-aarch64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/99-enable_test_stacktraces.sh new file mode 100755 index 00000000..600b7850 --- /dev/null +++ b/coin/provisioning/qtci-linux-Debian-11.6-aarch64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/99-enable_test_stacktraces.sh new file mode 100755 index 00000000..600b7850 --- /dev/null +++ b/coin/provisioning/qtci-linux-RHEL-9.2-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/99-enable_test_stacktraces.sh new file mode 100755 index 00000000..600b7850 --- /dev/null +++ b/coin/provisioning/qtci-linux-SLES-15_SP5-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/99-enable_test_stacktraces.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/99-enable_test_stacktraces.sh new file mode 100755 index 00000000..600b7850 --- /dev/null +++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/99-enable_test_stacktraces.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +#Copyright (C) 2023 The Qt Company Ltd +#SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR"/../common/linux/enable_test_stacktraces.sh