This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/60750] [4.8/4.9 Regression] double free after std::move on string inside throw when compiled with optimization


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60750

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
           Priority|P3                          |P2
   Target Milestone|---                         |4.8.3

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
valgrind says

==12050== Invalid free() / delete / delete[] / realloc()
==12050==    at 0x4C28FAC: operator delete(void*) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==12050==    by 0x400DA3: main (basic_string.h:547)
==12050==  Address 0x5a0b0b0 is 0 bytes inside a block of size 30 free'd
==12050==    at 0x4C28FAC: operator delete(void*) (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==12050==    by 0x4EF6879: std::string::_M_mutate(unsigned long, unsigned long,
unsigned long) (in /usr/lib64/libstdc++.so.6.0.20)
==12050==    by 0x4EF6D1D: std::string::_M_replace_safe(unsigned long, unsigned
long, char const*, unsigned long) (in /usr/lib64/libstdc++.so.6.0.20)
==12050==    by 0x400CF3: thrower(std::string) (basic_string.h:1277)
==12050==    by 0x400D8F: main (t.C:13)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]