Bugzilla – Bug 156240
Complex C++ type causes ld segfault.
Last modified: 2006-03-09 17:21:38 UTC
Attempting to compile and link the attached (valid) C++ program using "g++ t.cpp" results in the following error: collect2: ld terminated with signal 11 [Segmentation fault] I've been able to reproduce it on two SUSE 10.0 systems: Linux groen 2.6.13-15-default #1 Tue Sep 13 14:56:15 UTC 2005 x86_64 x86_64 x86_64 GNU/Linux gcc version 4.0.2 20050901 (prerelease) (SUSE Linux) GNU ld version 2.16.91.0.2 20050720 (SuSE Linux) and: Linux rood 2.6.13-15.7-default #1 Tue Nov 29 14:32:29 UTC 2005 i686 athlon i386 GNU/Linux gcc version 4.0.2 20050901 (prerelease) (SUSE Linux) GNU ld version 2.16.91.0.2 20050720 (SuSE Linux) I've /not/ been able to reproduce it on the following two non-SUSE machines: Linux lilo 2.6.12-1.1372_FC3 #1 Fri Jul 15 00:59:10 EDT 2005 i686 i686 i386 GNU/Linux gcc version 3.4.4 20050721 (Red Hat 3.4.4-2) GNU ld version 2.15.92.0.2 20040927 and: FreeBSD xs2.xs4all.nl 4.10-RELEASE-p2 FreeBSD 4.10-RELEASE-p2 #2: Mon Apr 18 16:45:47 CEST 2005 gcc version 2.95.4 20020320 [FreeBSD] GNU ld version 2.12.1 [FreeBSD] 2002-07-20 On these, the program compiles, links, and runs fine. I think it has to do with the mangled symbol size, as making the type less complex causes the problem to disappear. Types this complex are not (at all) uncommon in C++ template metaprogramming, so it's not an acedemic problem.
Created attachment 71860 [details] test case
Fixed.