seqan3 icon indicating copy to clipboard operation
seqan3 copied to clipboard

char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’

Open tillea opened this issue 3 years ago • 1 comments

Does this problem persist on the current master?

  • [X] I have verified the issue on the current master

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

I did not verified the problem on current master. I belong to the Debian maintainer team that maintains seqan3 in Debian. We are just building tagged releases in Debian. I have not found any issue about this problem in your bug tracker.

There is a bug report which describes a build failure. I verified this on my local machine as well as in the CI of our development platform where you can see the most recent build log. The critical part of the log is probably (but not necessarily):

FAILED: alphabet/container/CMakeFiles/container_concept_test.dir/container_concept_test.cpp.o
/usr/lib/ccache/c++ -DSEQAN3_HAS_BZIP2=1 -DSEQAN3_HAS_ZLIB=1 -I/builds/med-team/seqan3/debian/output/source_dir/test/include -I/builds/med-team/seqan3/debian/output/source_dir/      include -isystem /builds/med-team/seqan3/debian/output/source_dir/submodules/sdsl-lite/include -isystem /builds/med-team/seqan3/debian/output/source_dir/build_unit/vendor/googletest/    googletest/include -g -O2 -ffile-prefix-map=/builds/med-team/seqan3/debian/output/source_dir=. -fstack-protector-strong -Wformat -Werror=format-security -fuse-ld=gold -DNDEBUG -O3 -     Wdate-time -D_FORTIFY_SOURCE=2 -pedantic -Wall -Wextra -Werror -Wno-interference-size -std=c++20 -MD -MT alphabet/container/CMakeFiles/container_concept_test.dir/container_concept_test. cpp.o -MF alphabet/container/CMakeFiles/container_concept_test.dir/container_concept_test.cpp.o.d -o alphabet/container/CMakeFiles/container_concept_test.dir/container_concept_test.cpp. o -c /builds/med-team/seqan3/debian/output/source_dir/test/unit/alphabet/container/container_concept_test.cpp
In file included from /usr/include/c++/12/ios:40,
                 from /usr/include/c++/12/ostream:38,
                 from /usr/include/c++/12/bits/unique_ptr.h:41,
                 from /usr/include/c++/12/memory:76,
                 from /usr/include/gtest/gtest.h:54,
                 from /builds/med-team/seqan3/debian/output/source_dir/test/unit/alphabet/container/container_concept_test.cpp:8:
In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’,
    inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::          char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const      _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*,    size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(size_type, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1928:22,
    inlined from ‘virtual void container_sequence_container_former_travis_bug_Test::TestBody()’ at /builds/med-team/seqan3/debian/output/source_dir/test/unit/alphabet/container/     container_concept_test.cpp:75:13:
/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets 4 and 3  may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
      |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’,
    inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::          char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const      _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*,    size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(size_type, const std::__cxx11::          basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1858:29,
    inlined from ‘virtual void container_sequence_container_former_travis_bug_Test::TestBody()’ at /builds/med-team/seqan3/debian/output/source_dir/test/unit/alphabet/container/     container_concept_test.cpp:79:13:
/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets 8 and 7  may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
      |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’,
    inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::          char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const      _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(size_type, size_type, const _CharT*,    size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2171:19,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::replace(__const_iterator, __const_iterator,     const _CharT*, const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:2380:22,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::iterator std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(const_iterator, _InputIterator, _InputIterator) [with _InputIterator = const char*; <template-parameter-2-2> = void; _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1798:17,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::iterator std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::insert(const_iterator, std::           initializer_list<_Tp>) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1830:28,
    inlined from ‘virtual void container_sequence_container_former_travis_bug_Test::TestBody()’ at /builds/med-team/seqan3/debian/output/source_dir/test/unit/alphabet/container/     container_concept_test.cpp:136:13:
/usr/include/c++/12/bits/char_traits.h:431:56: error: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets [2,      9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n));
      |                                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors

Expected Behavior

I would expect that seqan3 builds as it did previously.

Steps To Reproduce

You might like to test building seqan3 in a recent Debian unstable (chroot, container, etc.)

Environment

- Operating system: Debian unstable
- SeqAn version: 3.2.0
- Compiler: 12.2.0

Anything else?

No response

tillea avatar Sep 27 '22 07:09 tillea

Hey there,

it's a bug in GCC 12 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105545) and is not yet fixed.

Our workaround is only enabled for GCC 12.1 (latest version at that time) in the 3.2.0 release.

We did bump that workaround lately: https://github.com/seqan/seqan3/commit/a04c764103dd96934d4587130847b480162ce473

So using this patch, it should compile.

eseiler avatar Sep 27 '22 15:09 eseiler

This worked, thanks @eseiler

mr-c avatar Oct 19 '22 12:10 mr-c