Repository navigation
Description
On GitHub Actions, the ubuntu-latest label is now starting to use ubuntu-22.04:
Unfortunately, this causes a lot of errors in testing ParFORM, mainly by the combination of Valgrind + MPI, due to (hopefully harmless) memory issues caused by dependent libraries of OpenMPI/MPICH.
We have some options to resove this problem:
-
Explicitly fix the image version as
ubuntu-20.04, instead ofubuntu-latest, and continue using MPICH. -
Generate a Valgrind suppression file and use it. Valgrind options in the test suite (
check.rb) can be configured by--valgrind-optsandFORM_CHECK_VALGRIND_OPTSintroduced in 3a2282a. -
Switch from Valgrind to the compiler sanitizers. MemorySanitizer may require a major effort because all dependent libraries should be built with MSan.
For now, I would adopt the 1st option, which should be valid at least for 2 years, until ubuntu-20.04 is deprecated. If the Valgrind + MPI memory issues have not been fixed by then, we have to revisit this problem.
To see the ParFORM test failures, one can try the Ubuntu 22.04 Docker image as follows:
docker run -it --rm ubuntu:22.04
# with OpenMPI
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y automake build-essential git libgmp-dev libopenmpi-dev ruby valgrind zlib1g-dev
git clone https://github.com/vermaseren/form.git
cd form
autoreconf -i
./configure --enable-parform --enable-debug
make -C sources parvorm
./check/check.rb --mpirun-opt='--allow-run-as-root --oversubscribe' valgrind ./sources/parvorm
# with MPICH
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y automake build-essential git libgmp-dev libmpich-dev ruby valgrind zlib1g-dev
git clone https://github.com/vermaseren/form.git
cd form
autoreconf -i
./configure --enable-parform --enable-debug
make -C sources parvorm
./check/check.rb valgrind ./sources/parvorm
If I use the 20.04 image, MPICH cleanly works (while OpenMPI triggers many Valgrind errors).
Activity
ci: retry each test when a timeout occurs
tueda commentedon Mar 11, 2025
If we can't find a good workaround, one possible option would be to remove
parvormfromvalgrind-checkandcoveragejobs, like https://github.com/tueda/form/tree/ci-remove-parvorm.The drawback is of course that we can't use Valgrind/Coveralls for ParFORM, but CI runs faster.
jodavies commentedon Mar 11, 2025
Since the idea is to deprecate parform anyway, removing it from the valgrind tests would not be so bad. Also maybe we should push directly to 24.04 (which also makes things easier to run tests once FLINT code is merged).
tueda commentedon Mar 11, 2025
One thing I find unclear is whether binaries built on Ubuntu 24.04 run on older distributions, even though they are statically linked. Maybe it works, and if it is actually guaranteed to work, then pushing to 24.04 makes sense also for improved compiler optimization by GCC 13.
github-actions commentedon Jul 4, 2026
This issue has been marked as stale after 90 days of inactivity. It will be closed automatically in 30 days unless there is any further activity. If this issue is still relevant, please leave a comment to keep it open.
tueda commentedon Jul 4, 2026
Closing this as the Valgrind check for
parvormhas already been removed.