Files
qt5/coin/provisioning/common/linux/vx_works.sh
T
Karim Pinter d44d627511 [VxWorks] raise kernel and RTP file descriptor limits to 1000
The CI VIP images were built with NUM_FILES, RTP_FD_NUM_MAX and
HRFS_DEFAULT_MAX_FILES at 300. That is too tight for the Qt autotests.

A single test binary runs several style suites in one RTP, and each Qt
thread's event dispatcher costs two descriptors for its wakeup pipe, on
top of windows, the QML disk cache on /ram0 and test data read over NFS.
tst_qquickpopup exhausted the per-RTP descriptor table roughly five
sixths of the way through its run and aborted with

  QFATAL : QEventDispatcherUNIXPrivate(): Cannot continue without a
           thread pipe

which is pipe() failing for want of a free descriptor.

NUM_FILES is the kernel-wide table, shared with the SSH daemon, the NFS
client and the serial console, so the same exhaustion starves those
services: the guest stops answering SSH, the test runner cannot reach it
any more and has to reboot the emulator. tst_qquickmenu wedges its guest
the same way.

Raise all three parameters to 1000. Descriptor table entries are a few
tens of bytes, so the memory cost is negligible on the emulated targets,
and the value stays well below FD_SETSIZE (2048) for any code that still
uses select(); Qt itself polls. This leaves an estimated two to three
times headroom over the peak demand of the heaviest test binary, which
is enough to stop the limit being the binding constraint while keeping a
genuine descriptor leak visible rather than merely delayed.

Fixes: QTBUG-150363
Pick-to: 6.12
Change-Id: I42e26afe0b21215d19b8ed5755a425d8bfed5278
Reviewed-by: Toni Saario <[email protected]>
2026-10-03 07:50:01 +00:00

92 lines
3.8 KiB
Bash
Executable File

#!/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
# This script installs vxworks libs and toolchain.
set -ex
# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh
source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh"
# shellcheck source=../unix/SetEnvVar.sh
source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
######### VXworks libs #########
# Installs to /opt/vxworks
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_libs_2603.tar.gz"
AltUrl=""
sha1="e9337894d4591e1d9e67640181c3d48fdb3d4a12"
targetFolder="/opt"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
SetEnvVar "VXWORKS_HOME" "/opt/vxworks"
SetEnvVar "VXWORKS_SSH" "[email protected]"
# IMX 6
VXWORKS_BUILD_VER="24-09-2026"
######### VXworks toolchain #########
# Installs to /opt/fsl_imx6_2_0_6_3_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_arm_vsb_${VXWORKS_BUILD_VER}.tar.gz"
AltUrl=""
sha1="aaa8d51a2e9d67573f808e92d71112926bfc2657"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
SetEnvVar "WIND_CC_SYSROOT" "/opt/fsl_imx6_2_0_6_3_VSB"
######### VXworks VIP kernel #########
# Installs to /opt/fsl_imx6_2_0_6_3_VIP_QEMU
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_arm_vip_${VXWORKS_BUILD_VER}.tar.gz"
AltUrl=""
sha1="3b69676a8621776d162d3d14cb97681c5075a4e7"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
# IMX 8
# Installs to /opt/nxp_imx8_1_0_7_1_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_arm_imx8_vsb_${VXWORKS_BUILD_VER}.tar.gz"
AltUrl=""
sha1="2b79925bf2f439ae23dbbd6d9f0eb7f12f5b5b30"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
# Installs to /opt/itl_generic_skylake_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_intel_vsb_${VXWORKS_BUILD_VER}.tar.gz"
AltUrl=""
sha1="59a4f78844d6d228fa9d74605a6a219a32f77ca8"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
# Installs to /opt/itl_generic_skylake_VIP_QEMU
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_intel_vip_${VXWORKS_BUILD_VER}.tar.gz"
AltUrl=""
sha1="b56be2e8617004448dc918ff061347a44e653db7"
targetFolder="/opt/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
######### VXworks fonts and certs #########
# Installs to /opt/fsl_imx6_2_0_6_3_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_misc.tar.gz"
AltUrl=""
sha1="1bc529b90b35b0b249f219e47d5798225a9b68d8"
targetFolder="/opt/fsl_imx6_2_0_6_3_VSB/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
######### VXworks fonts and certs #########
# Installs to /opt/itl_generic_skylake_VSB
PrimaryUrl="http://ci-files01-hki.ci.qt.io/input/vxworks/vxworks_misc.tar.gz"
AltUrl=""
sha1="1bc529b90b35b0b249f219e47d5798225a9b68d8"
targetFolder="/opt/itl_generic_skylake_VSB/"
InstallFromCompressedFileFromURL "$PrimaryUrl" "$AltUrl" "$sha1" "$targetFolder" ""
# Enable ipv4 routing from vxWorks to Qt DNS
if [ -f /etc/sysctl.conf ]; then
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
else
# There's no /etc/sysctl.conf in Ubuntu 26.04, use sysctl.d instead
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-vxworks.conf
fi
sudo iptables -I FORWARD 1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
# Copy start script in place
cp "${BASH_SOURCE%/*}/../linux/vxworks_qemu_launcher.sh" "${HOME}"
SetEnvVar "VXWORKS_EMULATOR" "${HOME}/vxworks_qemu_launcher.sh"