vermaseren / form

The FORM project for symbolic manipulation of very big expressions
GNU General Public License v3.0
982 stars 118 forks source link

[CI] ParFORM issues with the Ubuntu 22.04 image #429

Open tueda opened 1 year ago

tueda commented 1 year ago

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:

  1. Explicitly fix the image version as ubuntu-20.04, instead of ubuntu-latest, and continue using MPICH.

  2. Generate a Valgrind suppression file and use it. Valgrind options in the test suite (check.rb) can be configured by --valgrind-opts and FORM_CHECK_VALGRIND_OPTS introduced in https://github.com/vermaseren/form/commit/3a2282a4d1ecea15a2493013d6df6dfc5f1c1f43.

  3. 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).