A declaration static const Bad constBad = { ... } causes a core dump, fixed by removing the "const" keyword.
Example source file "b.cxx" ============================ #include <stdio.h> class Base { public: }; class Derived : public Base { public: int a, b, c, d; }; class Bad { public: int Base::*mpField0; int Base::*mpField1; }; class Good { public: int Derived::*mpField0; int Derived::*mpField1; }; int main( int argc, char *argv[] ) { static const Good good = { (int (Base::*)) &Derived::b, (int (Base::*)) &Derived::c }; printf( "good.mpField0 = %d\n", good.mpField0 ); printf( "good.mpField1 = %d\n", good.mpField1 ); static Bad bad = { (int (Base::*)) &Derived::b, (int (Base::*)) &Derived::c }; printf( "bad.mpField0 = %d\n", bad.mpField0 ); printf( "bad.mpField1 = %d\n", bad.mpField1 ); // This initialisation generates a CORE dump! static const Bad constBad = { (int (Base::*)) &Derived::b, (int (Base::*)) &Derived::c }; printf( "constBad.mpField0 = %d\n", constBad.mpField0 ); printf( "constBad.mpField1 = %d\n", constBad.mpField1 ); return 0; } g++ -v -save-temps -o b b.cxx =============================== Reading specs from /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/specs Configured with: /homes/spelis/dopt/gnu/gcc-3.4.1/configure --prefix=/opt/s2tools/native Thread model: posix gcc version 3.4.1 /opt/s2tools/native/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1plus -E -quiet -v -D_GNU_SOURCE b.cxx -mtune=pentiumpro -o b.ii ignoring nonexistent directory "/opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1 /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1/i686-pc-linux-gnu /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../include/c++/3.4.1/backward /usr/local/include /opt/s2tools/native/include /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/include /usr/include End of search list. /opt/s2tools/native/libexec/gcc/i686-pc-linux-gnu/3.4.1/cc1plus -fpreprocessed b.ii -quiet -dumpbase b.cxx -mtune=pentiumpro -auxbase b -version -o b.s GNU C++ version 3.4.1 (i686-pc-linux-gnu) compiled by GNU C version 3.2.3 20030502 (Red Hat Linux 3.2.3-49). GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o b.o b.s GNU assembler version 2.16.1 (i686-pc-linux-gnu) using BFD version 2.16.1 /opt/s2tools/native/libexec/gcc/i686-pc-linux-gnu/3.4.1/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o b /usr/lib/crt1.o /usr/lib/crti.o /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/crtbegin.o -L/opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1 -L/opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/lib -L/opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/../../.. b.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /opt/s2tools/native/lib/gcc/i686-pc-linux-gnu/3.4.1/crtend.o /usr/lib/crtn.o -- Summary: static const "class" initialisation causes core dump Product: gcc Version: 3.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: john dot spelis at 3dlabs dot com GCC build triplet: i686-pc-linux GCC host triplet: i686-pc-linux GCC target triplet: i686-pc-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28345