Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Mar 2015 19:11:11 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        hackers@FreeBSD.org
Subject:   crash in libstdc++ __dynamic_cast() only on FBSD 10, g++ libstdc++ guru advice needed
Message-ID:  <201503050311.t253BBqn061214@gw.catspoiler.org>

next in thread | raw e-mail | index | archive | help
I'm trying to debug an odd crash in openoffice that only happens on
FreeBSD 10 (and most likely 11).  It happens on both i386 and amd64.  It
does not happen FreeBSD 8.  Inside the guts of
__cxxabiv1::__dynamic_cast(), this line of code

    whole_type->__do_dyncast (src2dst, __class_type_info::__contained_public,
                              dst_type, whole_ptr, src_type, src_ptr, result);

ends up jumping to address 0, and it looks like the problem is a NULL
pointer in the vtable.

The code is being compiled with the default ports version of gcc on both
FreeBSD 8 and 10.  This is not a new problem and there have been
multiple versions of gcc used since the problem was first reported.  It
is just very strange the the same code compiled with the same version of
gcc, with the same compiler options and linked to the same version of
libstdc++ works on FreeBSD 8 and not FreeBSD 10.  Changing the compiler
optimization level has no effect.

All the gory details are here:
<https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=188088#c14>;

I'm about out of ideas, so any advice is welcome.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503050311.t253BBqn061214>