Hi, molds 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/molds_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. [...] 110 | catch(MolDS_base::MolDSException ex){ | ^~ In file included from mndo/Mndo.cpp:38: mndo/../mpi/AsyncCommunicator.h: In instantiation of ‘void MolDS_mpi::AsyncCommunicator::Run() [with T = double]’: mndo/Mndo.cpp:3577:50: required from here 3577 | boost::thread communicationThread( boost::bind(&MolDS_mpi::AsyncCommunicator::Run<double>, &asyncCommunicator) ); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/../mpi/AsyncCommunicator.h:62:43: warning: catching polymorphic type ‘class MolDS_base::MolDSException’ by value [-Wcatch-value=] 62 | catch(MolDS_base::MolDSException ex){ | ^~ mndo/../mpi/AsyncCommunicator.h:32:11: warning: unused variable ‘mpiRank’ [-Wunused-variable] 32 | int mpiRank = MolDS_mpi::MpiProcess::GetInstance()->GetRank(); | ^~~~~~~ cndo/../mpi/MpiProcess.h: In instantiation of ‘void MolDS_mpi::MpiProcess::SplitMessage2Chunks(std::vector<Chunk>&, int, T*, MolDS_mpi::molds_mpi_int) const [with T = const double; MolDS_mpi::molds_mpi_int = long int]’: cndo/../mpi/MpiProcess.h:39:32: required from ‘void MolDS_mpi::MpiProcess::Send(int, int, const T*, MolDS_mpi::molds_mpi_int) [with T = double; MolDS_mpi::molds_mpi_int = long int]’ 39 | this->SplitMessage2Chunks(chunks, tag, values, num); | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ cndo/../mpi/AsyncCommunicator.h:38:58: required from ‘void MolDS_mpi::AsyncCommunicator::Run() [with T = double]’ 38 | MolDS_mpi::MpiProcess::GetInstance()->Send(mInfo.dest, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ 39 | mInfo.tag, | ~~~~~~~~~~ 40 | reinterpret_cast<T*>(mInfo.vectorPtr), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41 | mInfo.num); | ~~~~~~~~~~ cndo/Cndo2.cpp:1446:50: required from here 1446 | boost::thread communicationThread( boost::bind(&MolDS_mpi::AsyncCommunicator::Run<double>, &asyncCommunicator) ); | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cndo/../mpi/MpiProcess.h:177:41: warning: narrowing conversion of ‘num’ from ‘MolDS_mpi::molds_mpi_int’ {aka ‘long int’} to ‘int’ [-Wnarrowing] 177 | Chunk chunk = {origianlTag, 0, num}; | ^~~ mndo/../mpi/MpiProcess.h: In instantiation of ‘void MolDS_mpi::MpiProcess::SplitMessage2Chunks(std::vector<Chunk>&, int, T*, MolDS_mpi::molds_mpi_int) const [with T = double; MolDS_mpi::molds_mpi_int = long int]’: mndo/../mpi/MpiProcess.h:53:32: required from ‘void MolDS_mpi::MpiProcess::Recv(int, int, T*, MolDS_mpi::molds_mpi_int) [with T = double; MolDS_mpi::molds_mpi_int = long int]’ 53 | this->SplitMessage2Chunks(chunks, tag, values, num); | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/Mndo.cpp:988:52: required from here 988 | MolDS_mpi::MpiProcess::GetInstance()->Recv(source, tag, matrixCIS[k], this->matrixCISdimension); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/../mpi/MpiProcess.h:177:41: warning: narrowing conversion of ‘num’ from ‘MolDS_mpi::molds_mpi_int’ {aka ‘long int’} to ‘int’ [-Wnarrowing] 177 | Chunk chunk = {origianlTag, 0, num}; | ^~~ mndo/../mpi/MpiProcess.h: In instantiation of ‘void MolDS_mpi::MpiProcess::SplitMessage2Chunks(std::vector<Chunk>&, int, T*, MolDS_mpi::molds_mpi_int) const [with T = const double; MolDS_mpi::molds_mpi_int = long int]’: mndo/../mpi/MpiProcess.h:39:32: required from ‘void MolDS_mpi::MpiProcess::Send(int, int, const T*, MolDS_mpi::molds_mpi_int) [with T = double; MolDS_mpi::molds_mpi_int = long int]’ 39 | this->SplitMessage2Chunks(chunks, tag, values, num); | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/Mndo.cpp:997:52: required from here 997 | MolDS_mpi::MpiProcess::GetInstance()->Send(dest, tag, matrixCIS[k], this->matrixCISdimension); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/../mpi/MpiProcess.h:177:41: warning: narrowing conversion of ‘num’ from ‘MolDS_mpi::molds_mpi_int’ {aka ‘long int’} to ‘int’ [-Wnarrowing] 177 | Chunk chunk = {origianlTag, 0, num}; | ^~~ mndo/../mpi/MpiProcess.h: In instantiation of ‘void MolDS_mpi::MpiProcess::AllReduce(const T*, MolDS_mpi::molds_mpi_int, T*, Op) [with T = double; Op = std::plus<double>; MolDS_mpi::molds_mpi_int = long int]’: mndo/../mpi/MpiProcess.h:105:25: required from ‘void MolDS_mpi::MpiProcess::AllReduce(T*, MolDS_mpi::molds_mpi_int, Op) [with T = double; Op = std::plus<double>; MolDS_mpi::molds_mpi_int = long int]’ 105 | this->AllReduce(values, num, tmpValues, op); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/Mndo.cpp:2852:51: required from here 2852 | MolDS_mpi::MpiProcess::GetInstance()->AllReduce(&this->matrixForce[0][0][0], numTransported, std::plus<double>()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mndo/../mpi/MpiProcess.h:92:31: warning: comparison of integer expressions of different signedness: ‘MolDS_mpi::molds_mpi_int’ {aka ‘long int’} and ‘std::vector<MolDS_mpi::MpiProcess::Chunk>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 92 | for(molds_mpi_int i=0; i<chunks.size(); i++){ | ~^~~~~~~~~~~~~~ make[2]: *** [Makefile_GNU:56: obj/Cndo2.o] Error 1 make[2]: *** [Makefile_GNU:56: obj/ZindoS.o] Error 1 make[2]: *** [Makefile_GNU:56: obj/Mndo.o] Error 1 make[2]: Leaving directory '/build/reproducible-path/molds-0.3.1/src' dh_auto_build: error: cd src && make -j128 INSTALL="install --strip-program=true" -f Makefile_GNU returned exit code 2 make[1]: *** [debian/rules:29: override_dh_auto_build] Error 25 make[1]: Leaving directory '/build/reproducible-path/molds-0.3.1' make: *** [debian/rules:20: binary] Error 2 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2