#1133460 dune-geometry: ftbfs with GCC-16

#1133460#5
Date:
2026-04-13 13:02:51 UTC
From:
To:
Hi,

dune-geometry fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/dune-geometry_arm64.build.xz

The last lines of the build log are at the end of this report.

To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.

[...]


In member function ‘Dune::MappedGeometry<Map, Geo>::GlobalCoordinate Dune::MappedGeometry<Map, Geo>::corner(int) const [with Map = AffineMapping<double, 3, 4>; Geo = Dune::Impl::LocalDerivativeGeometry<Dune::MultiLinearGeometry<double, 3, 3, Dune::MultiLinearGeometryTraits<double> > >]’,
    inlined from ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’ at /build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:124:56:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:158:38: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  158 |     return mapping()(geometry_.corner(i));
      |                      ~~~~~~~~~~~~~~~~^~~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh: In function ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:178:29: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  178 |         if( (geometry.corner( i ) - geometry.global( refElement.position( i, mydim ) )).two_norm() > tolerance )
      |              ~~~~~~~~~~~~~~~^~~~~
In member function ‘Dune::MappedGeometry<Map, Geo>::GlobalCoordinate Dune::MappedGeometry<Map, Geo>::corner(int) const [with Map = AffineMapping<double, 3, 4>; Geo = Dune::Impl::LocalDerivativeGeometry<Dune::MultiLinearGeometry<double, 3, 3, Dune::MultiLinearGeometryTraits<double> > >]’,
    inlined from ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’ at /build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:178:29:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:158:38: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  158 |     return mapping()(geometry_.corner(i));
      |                      ~~~~~~~~~~~~~~~~^~~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh: In function ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
   67 |   bool checkGeometry ( const TestGeometry& geometry )
      |        ^~~~~~~~~~~~~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:67:8: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
In member function ‘Dune::MappedGeometry<Map, Geo>::GlobalCoordinate Dune::MappedGeometry<Map, Geo>::corner(int) const [with Map = AffineMapping<double, 3, 4>; Geo = Dune::Impl::LocalDerivativeGeometry<Dune::MultiLinearGeometry<double, 3, 3, Dune::MultiLinearGeometryTraits<double> > >]’,
    inlined from ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’ at /build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:114:35:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:158:21: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  158 |     return mapping()(geometry_.corner(i));
      |            ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In member function ‘Dune::MappedGeometry<Map, Geo>::GlobalCoordinate Dune::MappedGeometry<Map, Geo>::center() const [with Map = AffineMapping<double, 3, 4>; Geo = Dune::Impl::LocalDerivativeGeometry<Dune::MultiLinearGeometry<double, 3, 3, Dune::MultiLinearGeometryTraits<double> > >]’,
    inlined from ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’ at /build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:117:52:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:164:38: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  164 |     return mapping()(geometry_.center());
      |                      ~~~~~~~~~~~~~~~~^~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:164:21: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  164 |     return mapping()(geometry_.center());
      |            ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh: In function ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:200:31: note: parameter passing for argument of type ‘Dune::FieldVector<double, 3>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  200 |       if ( (x - geometry.local( geometry.global( x ) )).two_norm() > tolerance ) {
      |                 ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
In member function ‘Dune::MappedGeometry<Map, Geo>::GlobalCoordinate Dune::MappedGeometry<Map, Geo>::center() const [with Map = AffineMapping<double, 3, 4>; Geo = Dune::Impl::LocalDerivativeGeometry<Dune::MultiLinearGeometry<double, 3, 3, Dune::MultiLinearGeometryTraits<double> > >]’,
    inlined from ‘bool Dune::checkGeometry(const TestGeometry&) [with TestGeometry = MappedGeometry<AffineMapping<double, 3, 4>, Impl::LocalDerivativeGeometry<MultiLinearGeometry<double, 3, 3, MultiLinearGeometryTraits<double> > > >]’ at /build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/checkgeometry.hh:117:52:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/mappedgeometry.hh:164:21: note: parameter passing for argument of type ‘Dune::FieldVector<double, 4>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  164 |     return mapping()(geometry_.center());
      |            ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-multilineargeometry.cc: In function ‘bool testNonLinearGeometry(const Traits&) [with ctype = double; Traits = Dune::MultiLinearGeometryTraits<double>]’:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-multilineargeometry.cc:309:40: note: parameter passing for argument of type ‘Dune::FieldVector<double, 2>’ when C++17 is enabled changed to match C++14 in GCC 10.1
  309 |     const Vector global(geometry.global(local));
      |                         ~~~~~~~~~~~~~~~^~~~~~~
[ 90%] Linking CXX executable test-multilineargeometry
cd /build/reproducible-path/dune-geometry-2.11.0/build/dune/geometry/test && /usr/bin/cmake -E cmake_link_script CMakeFiles/test-multilineargeometry.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/dune-geometry-2.11.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard  -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/test-multilineargeometry.dir/link.d "CMakeFiles/test-multilineargeometry.dir/test-multilineargeometry.cc.o" -o test-multilineargeometry  -Wl,-rpath,/build/reproducible-path/dune-geometry-2.11.0/build/lib ../../../lib/libdunegeometry.so.2.11 /usr/lib/aarch64-linux-gnu/libdunecommon.so.2.11 /usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libblas.so
make[5]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0/build'
[ 90%] Built target test-multilineargeometry
[ 93%] Linking CXX executable test-mappedgeometry
cd /build/reproducible-path/dune-geometry-2.11.0/build/dune/geometry/test && /usr/bin/cmake -E cmake_link_script CMakeFiles/test-mappedgeometry.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/dune-geometry-2.11.0=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard  -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,--dependency-file=CMakeFiles/test-mappedgeometry.dir/link.d "CMakeFiles/test-mappedgeometry.dir/test-mappedgeometry.cc.o" -o test-mappedgeometry  -Wl,-rpath,/build/reproducible-path/dune-geometry-2.11.0/build/lib ../../../lib/libdunegeometry.so.2.11 /usr/lib/aarch64-linux-gnu/libdunecommon.so.2.11 /usr/lib/aarch64-linux-gnu/liblapack.so /usr/lib/aarch64-linux-gnu/libblas.so
make[5]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0/build'
[ 93%] Built target test-mappedgeometry
make[4]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0/build'
make[3]: *** [CMakeFiles/Makefile2:1295: CMakeFiles/build_tests.dir/rule] Error 2
make[3]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0/build'
make[2]: *** [Makefile:546: build_tests] Error 2
make[2]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0/build'
dh_auto_build: error: cd build && make -j128 INSTALL="install --strip-program=true" build_tests VERBOSE=1 returned exit code 2
make[1]: *** [/usr/share/dune/dune-debian.mk:38: override_dh_auto_test] Error 25
make[1]: Leaving directory '/build/reproducible-path/dune-geometry-2.11.0'
make: *** [debian/rules:12: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2

#1133460#12
Date:
2026-08-03 08:24:00 UTC
From:
To:
Hi,

I shortly looked into this.

The problematic error seems to be the first omr of these (the rest is a result
of the first):

/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc: In instantiation of ‘bool checkLocalFiniteElementGeometry() [with ctype = double; int cdim = 4; Dune::GeometryType::IdType id = (D\
une::GeometryType::IdType)1]’:
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc:95:85:   required from ‘bool checkLocalFiniteElementGeometry() [with ctype = double]’
    95 |   pass &= checkLocalFiniteElementGeometry<ctype, 4, Dune::GeometryTypes::simplex(1)>();
       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc:136:52:   required from here
   136 |   pass &= checkLocalFiniteElementGeometry< double >();
       |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc:46:46: error: use of local variable with automatic storage from containing function
    46 |   auto f = [&](Dune::FieldVector<ctype,gt.dim()> const& x) {
       |                                        ~~~~~~^~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc:27:18: note: ‘constexpr const Dune::GeometryType gt’ declared here
    27 |   constexpr auto gt = Dune::GeometryType{id};
       |                  ^~
/build/reproducible-path/dune-geometry-2.11.0/dune/geometry/test/test-localfiniteelementgeometry.cc:64:8: error: no matching function for call to ‘Dune::LocalFiniteElementGeometry<Dune::Impl::LocalFiniteElement<Dune::Impl::P1LocalB\
asis<double, double, 1>, Dune::Impl::P1LocalInterpolation>, 4>::LocalFiniteElementGeometry(<brace-enclosed initializer list>)’
    64 |   auto geometry2 = Geometry{refElem, lfe, f};
       |        ^~~~~~~~~
   • there are 6 candidates

I think this should be valid c++ code, as the same construct is used outside of
the lambda without problems.

The code is

36:  Dune::FieldMatrix<ctype,cdim,gt.dim()> A; // No error here
...
45:  // mapping to generate coordinates from reference-element corners
46:  auto f = [&](Dune::FieldVector<ctype,gt.dim()> const& x) { // error because of gt.dim()
47:    Dune::FieldVector<ctype,cdim> y;
48:    A.mv(x,y);
49:    y += b;
50:    return y;
51:  };

I'll do some further investigations, but for now I think this a compiler problem.

Best,

Markus

#1133460#17
Date:
2026-08-07 15:19:21 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
dune-geometry, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1133460@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Markus Blatt <markus@dr-blatt.de> (supplier of updated dune-geometry package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Fri, 07 Aug 2026 15:57:18 +0200
Source: dune-geometry
Architecture: source
Version: 2.11.0-3
Distribution: unstable
Urgency: medium
Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Changed-By: Markus Blatt <markus@dr-blatt.de>
Closes: 1133460
Changes:
 dune-geometry (2.11.0-3) unstable; urgency=medium
 .
   * Fixes building with gcc-16 (Closes: #1133460)
Checksums-Sha1:
 6eb4a8bb0223a399c0e90c8426e1b2544097dad1 2344 dune-geometry_2.11.0-3.dsc
 a2e200e908ea0574b087a4162399c4a1f1151eef 7272 dune-geometry_2.11.0-3.debian.tar.xz
 58ceba236fa55da11e04d8e2453ffe534c1b38cd 10014 dune-geometry_2.11.0-3_source.buildinfo
Checksums-Sha256:
 1d879cff8a843fd7cf37823fce7dabb3c2d6464a166b358392e250ac2261b01f 2344 dune-geometry_2.11.0-3.dsc
 5b1f6e5643241c52c5effa767617076e2544bb1cf2494b838cb2a38880271e2f 7272 dune-geometry_2.11.0-3.debian.tar.xz
 b6b034470ae64cc29b49cdde1812119d0b87a6baf0ab873df6ea04356c6feb0b 10014 dune-geometry_2.11.0-3_source.buildinfo
Files:
 a343b241823f1f23941dcee599486518 2344 libs optional dune-geometry_2.11.0-3.dsc
 393fec08d5cb79a5526fc06c0aa664f2 7272 libs optional dune-geometry_2.11.0-3.debian.tar.xz
 b0abee1997f7b52f0023b195f353c2af 10014 libs optional dune-geometry_2.11.0-3_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEX5730Qbzr+QcV2vnUAaxd/1SdC8FAmp19R0ACgkQUAaxd/1S
dC+q+BAAltyiQwvWbdWa2a1Q0nLHGcpxQoTbwGRARRbzFX3CutPBjFqU5RQh3hY9
lqU0f1DUJIw4nUaswL0UW75O6dG+k0YOMxTlgPwlJee7tMQMDXALHWK6IUN0aQnd
EX+jga0G9+Mm6HNVl5Ty8mI8POE5Dksjwr+AyGw9u/A94WQ2vd7zOpRKk1qeWalk
p9larNkWItPN5iStAP5shGnuwQHHj8/iYhNsXf9iFtYvXfcOLVgzZhlE/dspVfy+
STxW/lXf83ENByRVHr+BMfJ2LLdXO3XcaL4SS4zmJ2mfvjElQPNgGr32NXcaZbjn
OQX6RheB4IMml/CYQUQ662jk2slhfEGs+MtdX9V5pkjqlxLuysD4mnvcVVXSaIkB
XeTx/bnw892TB0+TWFc9x8tYPA/BITuQOqQ1uqAUooXZqrTwbj6KRxRl5yS0/Kew
HIpjNEK3wIoFkUkvAoXdLyL+DRVS23v36A3emRelFo1K07Z3MC2947tWnIA3g4pH
HcTuY9L1kSJ5xgn6fXfycGNR4QV2kLUtQsDpBvkhR5tGYMFuAxR1WK8qPUl5YUcx
zYlBOOvF2MX52Zqjvk5K5wopTs0HnOPb8pvJG1SVFY9FdYxwaUzOIcdrRcY+U+KP
aJQnHVg/aWvCgRXx/wVWZ3flWIVF23R8nqdvtLJ3LuB22iyFwas=
=BsTO
-----END PGP SIGNATURE-----