Yesterday, one of my collegues ran into an internal compiler error when playing
with some template code.
Although she ran into the ICE on Mac OS X with an Apple gcc 4.01 build, it was
easy enough to reproduce it on a linux box with a GNU gcc build. I'm logging
this against 4.2.1, but it seems every 4.x version segfaults; I tested with
4.02, 4.1-20060113 (yep, some old build laying around), 4.2.1 and even with the
latest 4.3-20070713.
I created a small test case (see attachment) and this is the output I get with
4.2.1:
[EMAIL PROTECTED]:~/bugs/ice> ~/opt/gcc-4.2.1/bin/g++ -v -o test test.cpp
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2.1/configure --prefix=/home/dannyb/opt/gcc-4.2.1
--enable-languages=c,c++
Thread model: posix
gcc version 4.2.1
/home/dannyb/opt/gcc-4.2.1/libexec/gcc/i686-pc-linux-gnu/4.2.1/cc1plus -quiet
-v -D_GNU_SOURCE test.cpp -quiet -dumpbase test.cpp -mtune=generic -auxbase
test -version -o /tmp/ccyPKN6k.s
ignoring nonexistent directory
"/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1
/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/i686-pc-linux-gnu
/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/../../../../include/c++/4.2.1/backward
/usr/local/include
/home/dannyb/opt/gcc-4.2.1/include
/home/dannyb/opt/gcc-4.2.1/lib/gcc/i686-pc-linux-gnu/4.2.1/include
/usr/include
End of search list.
GNU C++ version 4.2.1 (i686-pc-linux-gnu)
compiled by GNU C version 4.2.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: cfede80d80c2b8e19355e4026d77f0b9
test.cpp: In member function void ScopeImpl::Execute() [with F = void
(*)(int)]:
test.cpp:31: instantiated from static void ScopeImplBase::SafeExecute(J&)
[with J = ScopeImpl]
test.cpp:50: instantiated from ScopeImpl::~ScopeImpl() [with F = void
(*)(int)]
test.cpp:46: instantiated from static void ScopeImpl::MakeGuard(F) [with
F = void (*)(int)]
test.cpp:68: instantiated from void DoAtExit(F) [with F = void (*)(int)]
test.cpp:74: instantiated from here
test.cpp:54: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
--
Summary: internal compiler error: Segmentation fault (templates)
Product: gcc
Version: 4.2.1
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danny dot boelens at artwork-systems dot com
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32839