Code:
#include <iostream> #include <string> #include <fstream> int main(int argc, char *argv[]) { std::string filename = "dummyfile"; std::ifstream infile(filename); std::string line; std::getline(infile, line); return 0; }
compiled and linked to:
g++-7 -std=c++17 -flto mycode.cpp
leads to:
* Error in `./a.out ': free (): invalid pointer: 0x0000000000602200 * Canceled (core dumped)
It compiles and works fine without the -flto flag. Saving -flto , but changing -std=c++17 to -std=c++14 or -std=c++11 would make it work. So it seems that there is something about the combination of flto and c++17 .
Gdb result:
#0 0x00007ffff7a4acc9 in __GI_raise ( sig=sig@entry =6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #1 0x00007ffff7a4e0d8 in __GI_abort () at abort.c:89 #2 0x00007ffff7a87f24 in __libc_message ( do_abort=do_abort@entry =1, fmt=fmt@entry =0x7ffff7b966c8 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175 #3 0x00007ffff7a941fe in malloc_printerr (ptr=<optimized out>, str=0x7ffff7b927b9 "free(): invalid pointer", action=1) at malloc.c:4996 #4 _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3840 #5 0x00007ffff77c6e25 in std::string::reserve(unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #6 0x00007ffff77c706a in std::string::append(char const*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #7 0x00007ffff7784aba in std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, char) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 #8 0x000000000040130b in std::basic_istream<char, std::char_traits<char> >& std::getline<char, std::char_traits<char>, std::allocator<char> >(std::basic_istream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) () #9 0x00000000004010cd in main ()
Compiler and OS: g ++ - 7 (Ubuntu 7.2.0-1ubuntu1 ~ 14.04) 7.2.0
source share