[gcc-4.3.1][c++] weird segfault with -O3 in constructor of a global object

Maik Beckmann beckmann.maik@googlemail.com
Fri Jun 27 07:19:00 GMT 2008


Am Freitag 27 Juni 2008 08:51:31 schrieb Maik Beckmann:
> Am Mittwoch 25 Juni 2008 19:09:13 schrieb Maik Beckmann:
> > Hello,
> >
> > This code
> > {{{
> > struct vector {
> >   vector() : x(0), y(0), z(0) { }
> >   float x,y,z;
> > };
> >
> > struct Foo {
> >   int dummy; // commenting this out makes it run perfectly
> >   vector array_of_vectors[4];
> > };
> >
> > Foo foo;
> >
> > int main() { }
> > }}}
> > compiled with
> >   g++ -O3 test.cpp -o test
> > segaults on my x86-64 linux box.
> >
> > I compiled it with -g
> >   g++ -O3 -g test.cpp -o test
> > and gdb gave
> > {{{
> > Program received signal SIGSEGV, Segmentation fault.
> > 0x0000000000400553 in global constructors keyed to foo () at test.cpp:2
> > 2	  vector() : x(0), y(0), z(0) { }
> > (gdb) bt
> > #0  0x0000000000400553 in global constructors keyed to foo () at
> > test.cpp:2 #1  0x0000000000400636 in __do_global_ctors_aux ()
> > #2  0x000000000040041b in _init ()
> > #3  0x00007fbf690ee8c0 in ?? () from /usr/lib/libstdc++.so.6
> > #4  0x00000000004005c5 in __libc_csu_init ()
> > #5  0x00007fbf688ca382 in __libc_start_main () from /lib/libc.so.6
> > #6  0x0000000000400479 in _start ()
> > (gdb)
> > }}}
> >
> > Can anyone confirm this?
> >
> > Thanks,
> >  -- Maik
>
> I debootstraped ubuntu hardy amd64 to a partition, did boot into and
> compiled gcc-4.3.1.  Same segfault as above.  I file a bug report.
>
> -- Maik

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36648



More information about the Gcc-help mailing list