conda-forge / metis-feedstock

A conda-smithy repository for metis.
BSD 3-Clause "New" or "Revised" License
0 stars 19 forks source link

Version 5.1.1 breaks downstream software #35

Closed akhmerov closed 1 year ago

akhmerov commented 1 year ago

Solution to issue cannot be found in the documentation.

Issue

The following script run on linux64 (ubuntu 23.04) results in a double free or corruption (out):

mamba create -y --name metis kwant "metis=5.1.1"
mamba activate metis
python -c "import kwant; kwant.test()"

downgrading metis to 5.1.0 removes the error. Here metis is used via mumps, and the test that fails indeed checks the mumps wrapper.

Installed packages

_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
brotli                    1.0.9                h166bdaf_9    conda-forge
brotli-bin                1.0.9                h166bdaf_9    conda-forge
brotli-python             1.0.9           py311ha362b79_9    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2023.7.22            hbcca054_0    conda-forge
certifi                   2023.7.22          pyhd8ed1ab_0    conda-forge
charset-normalizer        3.2.0              pyhd8ed1ab_0    conda-forge
colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
contourpy                 1.1.0           py311h9547e67_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
exceptiongroup            1.1.2              pyhd8ed1ab_0    conda-forge
fonttools                 4.42.0          py311h459d7ec_0    conda-forge
freetype                  2.12.1               hca18f0e_1    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
gmpy2                     2.1.2           py311h6a5fa03_1    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
iniconfig                 2.0.0              pyhd8ed1ab_0    conda-forge
kiwisolver                1.4.4           py311h4dd048b_1    conda-forge
kwant                     1.4.4           nompi_py311he78d816_100    conda-forge
lcms2                     2.15                 haa2dc70_1    conda-forge
ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
lerc                      4.0.0                h27087fc_0    conda-forge
libblas                   3.9.0           17_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_9    conda-forge
libbrotlidec              1.0.9                h166bdaf_9    conda-forge
libbrotlienc              1.0.9                h166bdaf_9    conda-forge
libcblas                  3.9.0           17_linux64_openblas    conda-forge
libdeflate                1.18                 h0b41bf4_0    conda-forge
libexpat                  2.5.0                hcb278e6_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 13.1.0               he5830b7_0    conda-forge
libgfortran-ng            13.1.0               h69a702a_0    conda-forge
libgfortran5              13.1.0               h15d22d2_0    conda-forge
libgomp                   13.1.0               he5830b7_0    conda-forge
libjpeg-turbo             2.1.5.1              h0b41bf4_0    conda-forge
liblapack                 3.9.0           17_linux64_openblas    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.23          pthreads_h80387f5_0    conda-forge
libpng                    1.6.39               h753d276_0    conda-forge
libsqlite                 3.42.0               h2797004_0    conda-forge
libstdcxx-ng              13.1.0               hfd8a6a1_0    conda-forge
libtiff                   4.5.1                h8b53f26_0    conda-forge
libuuid                   2.38.1               h0b41bf4_0    conda-forge
libwebp-base              1.3.1                hd590300_0    conda-forge
libxcb                    1.15                 h0b41bf4_0    conda-forge
libzlib                   1.2.13               hd590300_5    conda-forge
matplotlib-base           3.7.2           py311h54ef318_0    conda-forge
metis                     5.1.0             h58526e2_1006    conda-forge
mpc                       1.3.1                hfe3b2da_0    conda-forge
mpfr                      4.2.0                hb012696_0    conda-forge
mpmath                    1.3.0              pyhd8ed1ab_0    conda-forge
mumps-include             5.2.1               ha770c72_11    conda-forge
mumps-seq                 5.2.1               h2104b81_11    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
ncurses                   6.4                  hcb278e6_0    conda-forge
numpy                     1.25.2          py311h64a7726_0    conda-forge
openjpeg                  2.5.0                hfec8fc6_2    conda-forge
openssl                   3.1.2                hd590300_0    conda-forge
packaging                 23.1               pyhd8ed1ab_0    conda-forge
pillow                    10.0.0          py311h0b84326_0    conda-forge
pip                       23.2.1             pyhd8ed1ab_0    conda-forge
platformdirs              3.10.0             pyhd8ed1ab_0    conda-forge
pluggy                    1.2.0              pyhd8ed1ab_0    conda-forge
pooch                     1.7.0              pyha770c72_3    conda-forge
pthread-stubs             0.4               h36c2ea0_1001    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1              pyha2e5f31_6    conda-forge
pytest                    7.4.0              pyhd8ed1ab_0    conda-forge
python                    3.11.4          hab00c5b_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python_abi                3.11                    3_cp311    conda-forge
qsymm                     1.3.0              pyhd8ed1ab_0    conda-forge
readline                  8.2                  h8228510_1    conda-forge
requests                  2.31.0             pyhd8ed1ab_0    conda-forge
scipy                     1.11.1          py311h64a7726_0    conda-forge
scotch                    6.0.9                hb2e6521_2    conda-forge
setuptools                68.0.0             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sympy                     1.12            pypyh9d50eac_103    conda-forge
tinyarray                 1.2.4           py311h8b32b4d_2    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
typing-extensions         4.7.1                hd8ed1ab_0    conda-forge
typing_extensions         4.7.1              pyha770c72_0    conda-forge
tzdata                    2023c                h71feb2d_0    conda-forge
urllib3                   2.0.4              pyhd8ed1ab_0    conda-forge
wheel                     0.41.0             pyhd8ed1ab_0    conda-forge
xorg-libxau               1.0.11               hd590300_0    conda-forge
xorg-libxdmcp             1.1.3                h7f98852_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zlib                      1.2.13               hd590300_5    conda-forge
zstd                      1.5.2                hfc55251_7    conda-forge

Environment info

mamba info

          mamba version : 1.4.7
     active environment : metis
    active env location : /home/tinkerer/.conda/envs/metis
            shell level : 2
       user config file : /home/tinkerer/.condarc
 populated config files : /opt/conda/.condarc
          conda version : 23.5.0
    conda-build version : not installed
         python version : 3.11.4.final.0
       virtual packages : __archspec=1=x86_64
                          __glibc=2.35=0
                          __linux=3.10.0=0
                          __unix=0=0
       base environment : /opt/conda  (writable)
      conda av data dir : /opt/conda/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /home/tinkerer/.conda/pkgs
       envs directories : /home/tinkerer/.conda/envs
                          /opt/conda/envs
               platform : linux-64
             user-agent : conda/23.5.0 requests/2.31.0 CPython/3.11.4 Linux/3.10.0-1160.25.1.el7.x86_64 ubuntu/22.04.2 glibc/2.35
                UID:GID : 1004:100
             netrc file : None
           offline mode : False
mikemhenry commented 1 year ago

Just to confirm, this is what you are talking about:

../../micromamba/envs/kwant/lib/python3.11/site-packages/kwant/linalg/tests/test_mumps.py::test_schur_complement_with_dense double free or corruption (out)
mikemhenry commented 1 year ago

I captured a bit more detail here:

$ pytest -v -s -k test_schur_complement_with_dense                                                                                                                                 (kwant) 
==================================================================================== test session starts =====================================================================================
platform linux -- Python 3.11.4, pytest-7.4.0, pluggy-1.2.0 -- /home/mmh/micromamba/envs/kwant/bin/python3.11
cachedir: .pytest_cache
rootdir: /home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/kwant
collected 353 items / 352 deselected / 1 skipped / 1 selected                                                                                                                                

linalg/tests/test_mumps.py::test_schur_complement_with_dense Fatal Python error: Segmentation fault

Current thread 0x00007f5808dfc740 (most recent call first):
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/kwant/linalg/mumps.py", line 496 in schur_complement
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/kwant/linalg/tests/test_mumps.py", line 58 in _test_schur_complement_with_dense
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/kwant/linalg/tests/test_mumps.py", line 62 in test_schur_complement_with_dense
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/python.py", line 194 in pytest_pyfunc_call
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/python.py", line 1788 in runtest
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 169 in pytest_runtest_call
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 262 in <lambda>
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 341 in from_call
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 261 in call_runtest_hook
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 222 in call_and_report
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 133 in runtestprotocol
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/runner.py", line 114 in pytest_runtest_protocol
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/main.py", line 349 in pytest_runtestloop
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/main.py", line 324 in _main
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/main.py", line 270 in wrap_session
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/main.py", line 317 in pytest_cmdline_main
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_callers.py", line 80 in _multicall
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_manager.py", line 112 in _hookexec
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/pluggy/_hooks.py", line 433 in __call__
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/config/__init__.py", line 166 in main
  File "/home/mmh/micromamba/envs/kwant/lib/python3.11/site-packages/_pytest/config/__init__.py", line 189 in console_main
  File "/home/mmh/micromamba/envs/kwant/bin/pytest", line 10 in <module>

Extension modules: numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, kwant.graph.core, tinyarray, scipy._lib._ccallback_c, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._isolve._iterative, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.linalg._flinalg, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, kwant._system, kwant.linalg.lapack, kwant.operator, kwant.linalg._mumps, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.special._ellip_harm_2, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.optimize._minpack2, scipy.optimize._group_columns, scipy._lib.messagestream, scipy.optimize._trlib._trlib, numpy.linalg.lapack_lite, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize.__nnls, scipy.optimize._highs.cython.src._highs_wrapper, scipy.optimize._highs._highs_wrapper, scipy.optimize._highs.cython.src._highs_constants, scipy.optimize._highs._highs_constants, scipy.linalg._interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.spatial._ckdtree, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.spatial.transform._rotation, scipy.optimize._direct, kwant.graph.dijkstra, scipy._lib._uarray._uarray, scipy.fftpack.convolve, scipy.interpolate._fitpack, scipy.interpolate.dfitpack, scipy.interpolate._bspl, scipy.interpolate._ppoly, scipy.interpolate.interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, gmpy2.gmpy2, scipy.ndimage._nd_image, _ni_label, scipy.ndimage._ni_label, scipy.special.cython_special, scipy.stats._stats, scipy.stats.beta_ufunc, scipy.stats._boost.beta_ufunc, scipy.stats.binom_ufunc, scipy.stats._boost.binom_ufunc, scipy.stats.nbinom_ufunc, scipy.stats._boost.nbinom_ufunc, scipy.stats.hypergeom_ufunc, scipy.stats._boost.hypergeom_ufunc, scipy.stats.ncf_ufunc, scipy.stats._boost.ncf_ufunc, scipy.stats.ncx2_ufunc, scipy.stats._boost.ncx2_ufunc, scipy.stats.nct_ufunc, scipy.stats._boost.nct_ufunc, scipy.stats.skewnorm_ufunc, scipy.stats._boost.skewnorm_ufunc, scipy.stats.invgauss_ufunc, scipy.stats._boost.invgauss_ufunc, scipy.stats._biasedurn, scipy.stats._levy_stable.levyst, scipy.stats._stats_pythran, scipy.stats._statlib, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._mvn, scipy.stats._rcont.rcont, matplotlib._c_internal_utils, PIL._imaging, matplotlib._path, kiwisolver._cext, matplotlib._image (total: 129)
fish: Job 1, 'pytest -v -s -k test_schur_comp…' terminated by signal SIGSEGV (Address boundary error)
mikemhenry commented 1 year ago

Looking at the kwant feedstock, it doesn't pull in metis directly.

$ micromamba repoquery whoneeds metis
Using local repodata...

Loaded current active prefix: "/home/mmh/micromamba/envs/kwant"

 Name      Version Build       Depends                Channel    
──────────────────────────────────────────────────────────────────
 mumps-seq 5.2.1   h2104b81_11 metis >=5.1.0,<5.2.0a0 conda-forge

But it gets pulled in with mumps-seq

mikemhenry commented 1 year ago

And it looks like metis isn't pinned https://github.com/conda-forge/mumps-feedstock/blob/main/recipe/meta.yaml#L63

So I am not sure if the segfault is a bad build, or because the newer version of metis isn't ABI compatible with the older version that mumps builds against.

I think first we need to add a pin to mumps and then see if mumps either needs a rebuild, or we need to set it up so the deps pull in the version of metis that gets pulled in is the same that mumps used to build.

traversaro commented 1 year ago

Perhaps this is related to this upstream issue: https://github.com/KarypisLab/METIS/issues/69 .

traversaro commented 1 year ago

So I am not sure if the segfault is a bad build, or because the newer version of metis isn't ABI compatible with the older version that mumps builds against.

I am experiencing this problems while building from scratch spral in https://github.com/conda-forge/staged-recipes/pull/18148, so I do not think this is a ABI issue.

traversaro commented 1 year ago

As this problem has been confirmed by several downstream packages, can't we simply roll back https://github.com/conda-forge/metis-feedstock/pull/32 and mark metis 5.1.1 as broken? Anyone is against this or prefer some other strategy? If there is consensus, I would be happy to open a PR to mark metis 5.1.1 as broken. @conda-forge/metis

mikemhenry commented 1 year ago

The issue is that downstream packages do not have metis pinned correctly, so an incompatible version gets pulled in.

mikemhenry commented 1 year ago

In the meantime, until the other feedstocks patch their deps, installing whatever package you want and then adding metis=5.1.0 will work.

traversaro commented 1 year ago

The issue is that downstream packages do not have metis pinned correctly, so an incompatible version gets pulled in.

Are you sure that this is an ABI issue and not simply a bug in metis? I am experiencing this failure in spral that just link metis on its own, and it still segfaults. Did you try to rebuild some problematic packages and the crash was gone?

mikemhenry commented 1 year ago

This documentation here https://conda-forge.org/docs/maintainer/updating_pkgs.html#removing-broken-packages describes how to patch the package metadata, I don't have time to do this right now, but that is the cleanest fix IMHO

Are you sure that this is an ABI issue and not simply a bug in metis? I am experiencing this failure in spral that just link metis on its own, and it still segfaults. Did you try to rebuild some problematic packages and the crash was gone?

This is a good question :smile:

Yes, I made this version build for this package https://github.com/conda-forge/dgl-feedstock/pull/5 and the package builds fine, and I am able to run the tests/tutorial locally

So that would be one data point that this package is okay. Another would be the tests that run in CI. Here is the log for that build: https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=746883&view=logs&j=656edd35-690f-5c53-9ba3-09c10d0bea97&t=e5c8ab1d-8ff9-5cae-b332-e15ae582ed2d&l=836 and it passes.

So you are correct that this build could be broken, but a package that needs this version works, and the tests that ship with this version works. So I am not saying it can't be broken (I am not a metis expert) but I think it would help to check the change log between versions and see if there is something obvious there.

mikemhenry commented 1 year ago

In a fresh conda env:

micromamba create -n metis metis=5.1.1 compilers
micromamba activate metis
g++ -I$CONDA_PREFIX/include -L$CONDA_PREFIX/lib -lmetis metis_test.cpp -o metis_test
./metis_test

Doesn't produce a segfault on x86-64 linux (for me).

traversaro commented 1 year ago

Cool, thanks for trying! I still suspect this is not just an ABI issue as it also affects spral, but for sure it is not exactly like https://github.com/KarypisLab/METIS/issues/69 .

mikemhenry commented 1 year ago

@traversaro If you can make a small reproducer, that would be great! I hope I didn't come off as dismissive wrt this bug report, I really do want to make sure it is working and my threshold for working may be too low and there is an issue with the build.

Is this the package you are trying to build? https://github.com/ralna/spral One thing you could to do help track this down is build metis 5.1.1 yourself from source (ideally the same as the one we are using in the feedstock + the patches) and see if you get the same issue as the feedstock. It will likely be faster to iterate this locally than bouncing and building off of CI.

@ruizhi92 Can you give some more details about the segfault you observed? Thanks!

traversaro commented 1 year ago

Yes, a small reproducer would be great, anyhow I was a bit hesitant on spending time on this, given that 5.1.1 is itself quite an old metis release, and perhaps we are just debugging something that has been solved in latest metis.

mikemhenry commented 1 year ago

Yes, a small reproducer would be great, anyhow I was a bit hesitant on spending time on this, given that 5.1.1 is itself quite an old metis release, and perhaps we are just debugging something that has been solved in latest metis.

That is fair, my plan is to get a newer version out soon :tm:

ruizhi92 commented 1 year ago

@mikemhenry I installed METIS version 5.1.1 with CentOS 7.9.2009, build from source, gcc compiler, c++11.

When invoking METIS_PartGraphKway with the simplest program I found https://people.math.sc.edu/Burkardt/cpp_src/metis_test/metis_test.cpp, compiler reports "segmentation fault".

Unfortunately I have already uninstalled version 5.1.1. Can't really see much details about the segfault then, because the error comes from the dynamic library.

@traversaro If you can make a small reproducer, that would be great! I hope I didn't come off as dismissive wrt this bug report, I really do want to make sure it is working and my threshold for working may be too low and there is an issue with the build.

Is this the package you are trying to build? https://github.com/ralna/spral One thing you could to do help track this down is build metis 5.1.1 yourself from source (ideally the same as the one we are using in the feedstock + the patches) and see if you get the same issue as the feedstock. It will likely be faster to iterate this locally than bouncing and building off of CI.

@ruizhi92 Can you give some more details about the segfault you observed? Thanks!

mikemhenry commented 1 year ago

Closed until I can get a reproducer, feel free to re-open/comment if anyone has any questions!

traversaro commented 1 year ago

Possibly related comment: https://github.com/KarypisLab/METIS/issues/71#issuecomment-1696082046 .

traversaro commented 1 year ago

For the spral problem with METIS >= 5.1.1, I have opened an issue upstream in https://github.com/ralna/spral/issues/133 .