https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88177
Bug ID: 88177 Summary: Calng detectes undefined behavior in shared_ptr_base.h Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: semi1 at posteo dot de Target Milestone: --- Created attachment 45078 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45078&action=edit main.ii The clang undefined behavior finds an reference binding to address with insufficient space in shared_ptr_base.h gcc -v: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8.2.0-7ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 8.2.0 (Ubuntu 8.2.0-7ubuntu1) clang++-7 -v: clang version 7.0.0-3 (tags/RELEASE_700/final) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0 Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.3.0 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8 Candidate multilib: .;@m64 Selected multilib: .;@m64 Program which cause the error: main.cpp: #include <memory> int main() { auto sp = std::make_shared<int>(12); } Command line to compile: clang++-7 -std=c++11 -Og -g -fsanitize=undefined -fno-omit-frame-pointer -fno-rtti main.cpp Error: UBSAN_OPTIONS=print_stacktrace=1 ./a.out /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr_base.h:514:14: runtime error: reference binding to address 0x000000434e38 with insufficient space for an object of type 'const std::type_info' 0x000000434e38: note: pointer points here 00 00 00 00 00 46 4f 69 52 69 45 00 f8 ec 43 00 00 00 00 00 39 4e 43 00 00 00 00 00 01 1b 03 3b ^ #0 0x429c8a in std::_Sp_make_shared_tag::_S_ti() /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr_base.h:514:7 #1 0x4299e3 in std::__shared_ptr<int, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<int>, int>(std::_Sp_make_shared_tag, std::allocator<int> const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr_base.h:1329:43 #2 0x429822 in std::shared_ptr<int> std::allocate_shared<int, std::allocator<int>, int>(std::allocator<int> const&, int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr.h:706:14 #3 0x429665 in std::shared_ptr<int> std::make_shared<int, int>(int&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/shared_ptr.h:722:14 #4 0x429557 in main /home/jr/src/main.cpp:9:15 #5 0x7f89422fa09a in __libc_start_main /build/glibc-B9XfQf/glibc-2.28/csu/../csu/libc-start.c:308:16 #6 0x4033c9 in _start (/home/jr/src/a.out+0x4033c9) Notes: The error occures only when rtti is disabled. The gcc undefined behavior sanitizer does not detect anything