[Bug c++/87671] New: Incorrect debugging information for unique_ptr passed to a constructor

anton at swarmer dot me gcc-bugzilla@gcc.gnu.org
Sun Oct 21 01:44:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87671

            Bug ID: 87671
           Summary: Incorrect debugging information for unique_ptr passed
                    to a constructor
           Product: gcc
           Version: 8.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: anton at swarmer dot me
  Target Milestone: ---

Created attachment 44866
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44866&action=edit
Source code to reproduce

How to reproduce: compile the attached example with g++. I used:
  g++-8 -Wall -Wextra -save-temps bug.cpp -O0 -g -fsanitize=address,undefined
-o ./bug
Run with either gdb or lldb and set a breakpoint on line 7 (std::cout << *ptr).
Print *ptr in the debugger. For me 16 is printed, even though it should be 42.
Continue in debugger, observe that 42 is indeed printed to console.

The issue disappears if instead of a class constructor, I pass unique_ptr to a
normal function.

When compiling with clang++, both gdb and lldb show correct output. When
compiling with g++, both of them show incorrect output - which is why I suspect
that g++ is at fault here.

The system is Linux x86-64.

$ g++-8 -v
Using built-in specs.
COLLECT_GCC=g++-8
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-1ubuntu2~18.04' --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-1ubuntu2~18.04)


More information about the Gcc-bugs mailing list