http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55543
Bug #: 55543 Summary: diamond shaped inheritance involving strings leads to crashing executables (MinGW, 32 bit) Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: martin.giesek...@uos.de Created attachment 28837 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28837 source file to reproduce the issue When I compile the attached code with g++, mingw32 (gcc 4.7.2), I get an executable that crashes with the following exception: terminate called after throwing an instance of 'std::length_error' what(): basic_string::_S_create This only happens for mingw32. A 64 bit build of the same code works correctly. So do all 32/64 bit builds for Linux targets I've tested. Command line: g++ --save-temps -v -m32 inherit.cpp Message output: Built by Equation Solution <http://www.Equation.com>. Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=c:/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../gcc-4.7.2-mingw/configure --host=x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/4.7.2 --with-sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/4.7.2 --with-gcc --with-gnu-ld --with-gnu-as --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/cloog --with-ppl=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/ppl --with-host-libstdcxx='-lstdc++ -lsupc++ -lm' --enable-cloog-backend=ppl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enable-lto --enable-languages=c,c++,fortran --enable-libgomp --enable-threads=win32 --enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --enable-libquadmath --enable-libquadmath-support --disable-nls --disable-tls --disable-win32-registry Thread model: win32 gcc version 4.7.2 (GCC) COLLECT_GCC_OPTIONS='-save-temps' '-v' '-m32' '-mtune=generic' '-march=x86-64' c:/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/cc1plus.exe -E -quiet -v -imultilib 32 -iprefix c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/ -U_REENTRANT inherit.cpp -m32 -mtune=generic -march=x86-64 -fpch-preprocess -o inherit.ii ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2" ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/x86_64-w64-mingw32/32" ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/backward" ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/include" ignoring nonexistent directory "/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/4.7.2/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/4.7.2/lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include" ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/include-fixed" ignoring duplicate directory "c:/gcc/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include" ignoring nonexistent directory "/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/4.7.2/mingw/include" #include "..." search starts here: #include <...> search starts here: c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2 c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/x86_64-w64-mingw32/32 c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/backward c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/include c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/include-fixed c:\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include End of search list. COLLECT_GCC_OPTIONS='-save-temps' '-v' '-m32' '-mtune=generic' '-march=x86-64' c:/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/cc1plus.exe -fpreprocessed inherit.ii -quiet -dumpbase inherit.cpp -m32 -mtune=generic -march=x86-64 -auxbase inherit -version -o inherit.s GNU C++ (GCC) version 4.7.2 (x86_64-w64-mingw32) compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.0.0, MPC version 0.9 warning: GMP header version 5.0.5 differs from library version 5.0.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C++ (GCC) version 4.7.2 (x86_64-w64-mingw32) compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.0.0, MPC version 0.9 warning: GMP header version 5.0.5 differs from library version 5.0.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 0b3cd9e378660c38a8a80567400ff92f COLLECT_GCC_OPTIONS='-save-temps' '-v' '-m32' '-mtune=generic' '-march=x86-64' c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/as.exe -v --32 -o inherit.o inherit.s GNU assembler version 2.22.52 (x86_64-w64-mingw32) using BFD version (GNU Binutils) 2.22.52.20120723 COMPILER_PATH=c:/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/;c:/gcc/bin/../libexec/gcc/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ EQ_LIBRARY_PATH=c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/32/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib32/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib32/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/;c:/gcc/bin/../lib/gcc/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/;c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../ COLLECT_GCC_OPTIONS='-save-temps' '-v' '-m32' '-mtune=generic' '-march=x86-64' c:/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/collect2.exe --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/4.7.2 -m i386pe -Bdynamic c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib32/crt2.o c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib32/crtbegin.o -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/32 -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib32 -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib32 -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2 -Lc:/gcc/bin/../lib/gcc -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib -Lc:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../.. inherit.o -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib32/crtend.o