[forwarded from http://bugs.debian.org/504323]

Stephan Bergmann writes:

Reproducing with libstdc++.so.6 and libgcc_s.so.1 from gcc-4.4-20090102 
in unxlngi6.pro DEV300m38 OOo, the problem is that OOo at 
<http://svn.services.openoffice.org/ooo/tags/DEV300_m38/bridges/source/cpp_uno/gcc3_linux_intel/share.hxx>
 
l. 52 assumes a layout of struct __cxa_exception as given in section 
2.2.1 of <http://www.codesourcery.com/public/cxx-abi/abi-eh.html>, while 
GCC 4.4 added a new member

  _Atomic_word referenceCount;

to the start of the struct at 
gcc-4.4-20090102/libstc++-v3/libsupc++/unwind-cxx.h l. 57.  OOo tries to 
get at information stored in the __cxa_exception header in the 
destructor function passed to __cxa_throw (function deleteException at 
<http://svn.services.openoffice.org/ooo/tags/DEV300_m38/bridges/source/cpp_uno/gcc3_linux_intel/except.cxx>
 
l. 213), which now fails.

Please somebody clarify if GCC 4.4 adding a new member to struct 
__cxa_exception (and thus deviating from 
<http://www.codesourcery.com/public/cxx-abi/abi-eh.html>) is intended or 
is a mistake.

If it is intended, the OOo code needs to be changed (the information 
deleteException is now trying to retrieve from the __cxa_exception 
header must instead be encoded in the deleteException function itself, 
by dynamically creating instances of deleteException as is already done 
in the OOo bridges for Solaris).  If it is a mistake, the OOo code can 
stay as is and the GCC 4.4 code needs to be changed instead.


-- 
           Summary: Openoffice.org segfaults with runtime libs built from
                    GCC trunk
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: doko at ubuntu dot com


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

Reply via email to