#1096823 iceoryx: ftbfs with GCC-15

Package:
src:iceoryx
Source:
src:iceoryx
Submitter:
Matthias Klose
Date:
2025-09-04 22:08:31 UTC
Severity:
normal
Tags:
#1096823#5
Date:
2025-02-17 17:19:33 UTC
From:
To:
[This bug is NOT targeted to the upcoming trixie release]

Please keep this issue open in the bug tracker for the package it
was filed for.  If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.

The package fails to build in a test rebuild on at least amd64 with
gcc-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.

The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/iceoryx_2.0.6+dfsg-1_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.

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

  apt-get -t=experimental install g++

GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other Common build failures are new warnings resulting in build failures
with -Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-15/porting_to.html

[...]
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:384:33,
    inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:402:44,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:338:26,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(size_type, const value_type&, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:598:47,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignCStringOfSizeGreaterCapaResultsInSize0_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<1000>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:617:23:
/usr/include/c++/15/bits/new_allocator.h:151:73: note: at offset 1001 into object of size 1001 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                                         ^
In member function ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’,
    inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:674:17,
    inlined from ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {char}; _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/vector.tcc:117:30,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<1>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:632:32:
/usr/include/c++/15/bits/new_allocator.h:191:11: warning: array subscript 2 is outside array bounds of ‘char [2]’ [-Warray-bounds=]
  191 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = char]’,
    inlined from ‘static _Tp* std::allocator_traits<std::allocator<_CharT> >::allocate(allocator_type&, size_type) [with _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:614:28,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:384:33,
    inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:402:44,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:338:26,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(size_type, const value_type&, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:598:47,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<1>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:631:23:
/usr/include/c++/15/bits/new_allocator.h:151:73: note: at offset 2 into object of size 2 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                                         ^
In member function ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’,
    inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:674:17,
    inlined from ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {char}; _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/vector.tcc:117:30,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<15>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:632:32:
/usr/include/c++/15/bits/new_allocator.h:191:11: warning: array subscript 16 is outside array bounds of ‘char [16]’ [-Warray-bounds=]
  191 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = char]’,
    inlined from ‘static _Tp* std::allocator_traits<std::allocator<_CharT> >::allocate(allocator_type&, size_type) [with _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:614:28,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:384:33,
    inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:402:44,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:338:26,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(size_type, const value_type&, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:598:47,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<15>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:631:23:
/usr/include/c++/15/bits/new_allocator.h:151:73: note: at offset 16 into object of size 16 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                                         ^
In member function ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’,
    inlined from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = char; _Args = {char}; _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:674:17,
    inlined from ‘void std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {char}; _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/vector.tcc:117:30,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<100>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:632:32:
/usr/include/c++/15/bits/new_allocator.h:191:11: warning: array subscript 101 is outside array bounds of ‘char [101]’ [-Warray-bounds=]
  191 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = char]’,
    inlined from ‘static _Tp* std::allocator_traits<std::allocator<_CharT> >::allocate(allocator_type&, size_type) [with _Tp = char]’ at /usr/include/c++/15/bits/alloc_traits.h:614:28,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:384:33,
    inlined from ‘void std::_Vector_base<_Tp, _Alloc>::_M_create_storage(std::size_t) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:402:44,
    inlined from ‘std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::size_t, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:338:26,
    inlined from ‘std::vector<_Tp, _Alloc>::vector(size_type, const value_type&, const allocator_type&) [with _Tp = char; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/stl_vector.h:598:47,
    inlined from ‘void {anonymous}::stringTyped_test_UnsafeAssignOfInvalidCStringFails_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = iox::cxx::string<100>]’ at /build/reproducible-path/iceoryx-2.0.6+dfsg/iceoryx_hoofs/test/moduletests/test_cxx_string.cpp:631:23:
/usr/include/c++/15/bits/new_allocator.h:151:73: note: at offset 101 into object of size 101 allocated by ‘operator new’
  151 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                                         ^
[ 68%] Linking CXX executable hoofs_moduletests
cd /build/reproducible-path/iceoryx-2.0.6+dfsg/obj/hoofs/test && /usr/bin/cmake -E cmake_link_script CMakeFiles/hoofs_moduletests.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/iceoryx-2.0.6+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -Wl,--dependency-file=CMakeFiles/hoofs_moduletests.dir/link.d CMakeFiles/hoofs_moduletests.dir/moduletests/test_access_control.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_allocator.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_atomic_relocatable_ptr.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_fifo.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_loffli.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_periodic_task.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_smart_lock.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_sofi.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_taco.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_concurrent_trigger_queue.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_algorithm.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_convert.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_deadline_timer.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_expected.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_filesystem.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_forward_list.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_function.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_function_ref.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_and_then.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_common.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_concat_multiple_calls.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_expect.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_or_else.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_types.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_functional_interface_value_or.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_generic_raii.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_helplets.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_list.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_method_callback.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_newtype.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_optional.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_poor_mans_heap.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_reference_counter.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_serialization.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_set.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_stack.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_string.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_type_traits.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_unique_id.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_unique_ptr.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_variant.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_variant_queue.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_cxx_vector.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_directed_graph.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_file_reader.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_hoofs_modules.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_index_queue.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_ipc_channel.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_lockfree_queue.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_lockfree_queue_buffer.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_lockfree_queue_cyclic_index.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_logger.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_logstream.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_objectpool.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_access_rights.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_file_lock.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_mutex.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_posix_call.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_signal_handler.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_signal_watcher.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_thread.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_posix_timer.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_relative_pointer.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_relative_pointer_data.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_relocatable_ptr.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_resizeable_lockfree_queue.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_semaphore_module.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_shared_memory.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_shared_memory_object.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_static_storage.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_unit_duration.cpp.o CMakeFiles/hoofs_moduletests.dir/moduletests/test_unix_domain_sockets.cpp.o -o hoofs_moduletests  -Wl,-rpath,/build/reproducible-path/iceoryx-2.0.6+dfsg/obj/hoofs:/build/reproducible-path/iceoryx-2.0.6+dfsg/obj/hoofs/platform /usr/lib/x86_64-linux-gnu/libgtest.a /usr/lib/x86_64-linux-gnu/libgmock.a ../libiceoryx_hoofs_testing.a -lacl -ldl -lpthread -lrt /usr/lib/x86_64-linux-gnu/libgmock.a /usr/lib/x86_64-linux-gnu/libgtest.a ../libiceoryx_hoofs.so.2.0.6 ../platform/libiceoryx_platform.so.2.0.6 -latomic -lpthread -lrt
make[3]: Leaving directory '/build/reproducible-path/iceoryx-2.0.6+dfsg/obj'
[ 68%] Built target hoofs_moduletests
make[2]: Leaving directory '/build/reproducible-path/iceoryx-2.0.6+dfsg/obj'
make[1]: *** [Makefile:159: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/iceoryx-2.0.6+dfsg/obj'
dh_auto_build: error: cd obj && make -j8 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:21: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2