This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/12233] New: Segfault if class misses trailing semicolon
- From: "pso at netman dot dk" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Sep 2003 07:23:07 -0000
- Subject: [Bug c++/12233] New: Segfault if class misses trailing semicolon
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12233
Summary: Segfault if class misses trailing semicolon
Product: gcc
Version: 3.2
Status: UNCONFIRMED
Severity: critical
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pso at netman dot dk
CC: gcc-bugs at gcc dot gnu dot org
In a special situation (see file example) a missing ; at the end of a class
declaration causes a segfault instead of an error. The offending class is D
below, but it seems that the surrounding classes and code is needed to trigger
the problem.
Im using mingw through Dev-Cpp on Windows 2000, Pentium 3
-----------------------
--- GccSegfault.cpp ---
class A {
public:
};
class B {
public:
void Lock();
};
class C {
};
class D: public A {
public:
B slave;
D()
{
slave.Lock();
}
}
C::C()
{
}
----
C:\Dev-Cpp\Projects>..\bin\g++ -v -save-temps GccSegfault.cpp
Reading specs from ../bin/../lib/gcc-lib/mingw32/3.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=f77,c++,objc,ada --disable-win32-registry --disable-shared
Thread model: win32
gcc version 3.2 (mingw special 20020817-1)
..\bin\..\lib\gcc-lib\mingw32\3.2\cpp0.exe -lang-c++ -D__GNUG__=3 -D__DEPRECATE
D -D__EXCEPTIONS -v -iprefix ..\bin\../lib/gcc-lib/mingw32/3.2/ -D__GNUC__=3 -D_
_GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=0 -D__GXX_ABI_VERSION=102 -D_WIN32 -D__WIN
32 -D__WIN32__ -DWIN32 -D__MINGW32__ -D__MSVCRT__ -DWINNT -D_X86_=1 -D_WIN32 -D_
_WIN32 -D__WIN32__ -D__WIN32__ -D__MINGW32__ -D__MSVCRT__ -D__WINNT__ -D_X86_=1
-D__WIN32 -D__WINNT -Asystem=winnt -D__NO_INLINE__ -D__STDC_HOSTED__=1 -Acpu=i38
6 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i586__ -D__tune_pentium__ -
D__stdcall=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D_
_fastcall=__attribute__((__fastcall__)) -D_stdcall=__attribute__((__stdcall__))
-D_cdecl=__attribute__((__cdecl__)) -D_fastcall=__attribute__((__fastcall__)) -D
__declspec(x)=__attribute__((x)) GccSegfault.cpp GccSegfault.ii
GNU CPP version 3.2 (mingw special 20020817-1) (cpplib) (80386, BSD syntax)
ignoring nonexistent directory "../include/c++/3.2"
ignoring nonexistent directory "../include/c++/3.2/mingw32"
ignoring nonexistent directory "../include/c++/3.2/backward"
ignoring nonexistent directory "../mingw32/include"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/../../../../inclu
de/c++/3.2"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/../../../../inclu
de/c++/3.2/mingw32"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/../../../../inclu
de/c++/3.2/backward"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/../../../../inclu
de"
ignoring nonexistent directory "/mingw/include"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/include"
ignoring nonexistent directory "/mingw/lib/gcc-lib/mingw32/3.2/../../../../mingw
32/include"
ignoring nonexistent directory "/usr/local/mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
../include
../lib/gcc-lib/mingw32/3.2/include
End of search list.
..\bin\..\lib\gcc-lib\mingw32\3.2\cc1plus.exe -fpreprocessed GccSegfault.ii -qu
iet -dumpbase GccSegfault.cpp -version -o GccSegfault.s
GNU CPP version 3.2 (mingw special 20020817-1) (cpplib) (80386, BSD syntax)
GNU C++ version 3.2 (mingw special 20020817-1) (mingw32)
compiled by GNU C version 3.2.
GccSegfault.cpp:24: internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
----