$ cat >test.cxx struct base { };
struct derived : virtual base { }; struct base_parser { virtual base* top () = 0; }; struct derived_parser : virtual base_parser { virtual derived* top () { return 0; //return new derived; } }; int main () { base_parser* p = new derived_parser; base* b = p->top (); } $ g++-3.4 test.cxx bash-2.05a$ ./a.out Segmentation fault -- Summary: zero covarian return pointer adjustment results in segfault Product: gcc Version: 3.4.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: boris at kolpackov dot net CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: i686-linux-gnu GCC host triplet: i686-linux-gnu GCC target triplet: i686-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18098