[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problems with OpenOffice.org and gcc-3.1 on PowerPC and perhaps on intel, too! [was: kevin.hendricks@sympatico.ca: [dev] question on cppuhelper throwException and double TYPELIB_DANGER_RELEASE]



Hi Jan,

FYI:   I am finishing up a brand new build with the latest gcc 3.1.1 pre 
release (hopefully to kill the optimization bug, and second I have added a 
patch from Franz Sirl to Mozilla 1.0 to fix the improper linking of its  
libnspr.so  with -lc which ties it to __udivdi3@GLIBC_2_0 on my machine 
when built with Franz' latest glibc 2.2.5 version.

So hopefully both problems will be fixed with my next build.

I'll let you know when it is done so that you can test it.

Thanks,

Kevin


On July 7, 2002 07:28, Jan-Hendrik Palic wrote:
> Hi ..
>
> I mailed with Kevin B. Hendricks this weekend and we tried to find out,
> why the OpenOffice.org binaries did not work under a normal
> Debian-System.
>
> Kevin build his OpenOffice.org with gcc-3.1 and glibc2.2.5 and
> binutils2.12.90.0.7, but we got a SIGKILL after the splash screen comes.
>
> Beside Jack Howorth he found out, that this code on the bottom is
> breaking the functionality of OpenOffice.org on Debian for PowerPC and
> SuSE ...
>
> We are working on it, but we are not really sure, where the bug comes
> from. If Kevin builds the libcppuhelper3.so lib (which location is in
> /usr/lib/openoffice/program) with -O0, then OpenOffice.org starts and
> works (up to choosing a connection for the external adressdatabase, then
> you got a SIGKILL)
>
> It seems also, that the libc6 is broken on PowerPC. I send Ben Collins a
> patch and I think he will apply this to the next glibc-package. You can
> have a look to "my" libc6 here:
>   http://bourbaki.math.uni-kiel.de/~jpalic/debian/pool/main/l/libc6/
>
> I have to check out, what are the differences be between Kevins
> toolchain and ours.
>
> Haggai, you tried to build OOo with gcc-3.1 on Intel and got a similar
> SIGKILL as we on PowerPC. I wonder, if the build of libcppuhelper3.so
> with -O0 instead of -O2 will work for you, too.
>
> Below the mail from Kevin B. Hendrick about the PowerPC issue ....
>
>
> 	regards
> 		Jan
>
> ----- Forwarded message from "Kevin B. Hendricks"
> <kevin.hendricks@sympatico.ca> -----
>
> Reply-To: dev@openoffice.org
> From: "Kevin B. Hendricks" <kevin.hendricks@sympatico.ca>
> To: dev@udk.openoffice.org, dev@openoffice.org
> Date: Fri, 5 Jul 2002 23:50:55 -0400
> X-Mailer: KMail [version 1.4]
> Subject: [dev] question on cppuhelper throwException and double
> TYPELIB_DANGER_RELEASE
>
> Hi,
>
> In cppuhelper/source/exc_thrower.cxx is the routine
> cppu::throwException().  I have a backtrace showing we are actually
> invoking TYPELIB_DANGER_RELEASE(pComp) twice. That macro does *not*
> check if pComp exists before invoking its release method. This is
> results in a jump into the weeds that is generating a SIGILL on Debian
> ppc Linux machines.
>
> So I have some questions.
>
> 1. can xThrower->throwException(rExc) actually return?
>
> TYPELIB_DANGER_RELEASE( pComp );
> xThrower->throwException( rExc );
>
> 2. if so, then why are we not checking if pComp still exists (or if it
> has already been released) before we call
>
> TYPELIB_DANGER_RELEASE( pComp );
>
> the second time.
>
> 3. If not, could this be a race in that xThrower->throwException may
> actually return briefly until the excetion that is thrown is actually
> caught.  If it should not ever return perhaps we should put an infinite
> loop there to prevent a race.
>
> Here is the full routine.
>
> void SAL_CALL throwException( const Any & rExc ) SAL_THROW( (Exception)
> ) {
>         if (rExc.getValueTypeClass() == TypeClass_EXCEPTION)
>         {
>                 OUString aExceptionName(
> RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.Exception") );
> typelib_TypeDescription * pComp = 0;
>                 TYPELIB_DANGER_GET( &pComp, rExc.getValueTypeRef() );
>                 // must be derived from com.sun.star.uno.Exception
>                 for ( typelib_CompoundTypeDescription * pTD =
> (typelib_CompoundTypeDescription *)pComp; pTD; pTD =
> pTD->pBaseTypeDescription ) {
>                         if (aExceptionName ==
> rtl::OUString(((typelib_TypeDescription *)pTD)->pTypeName)) {
>                                 Mapping aUno2Cpp( OUString(
> RTL_CONSTASCII_USTRINGPARAM(UNO_LB_UNO) ), OUString(
> RTL_CONSTASCII_USTRINGPARAM(CPPU_CURRENT_LANGUAGE_BINDING_NAME) ) );
> OSL_ENSURE( aUno2Cpp.is(), "### cannot get uno to cpp mapping!" ); if
> (aUno2Cpp.is())
>                                 {
>                                         uno_Interface * pUnoI = new
> ExceptionThrower(); (*pUnoI->acquire)( pUnoI ); Reference< XThrower >
> xThrower; aUno2Cpp.mapInterface(
>                                                 reinterpret_cast< void
> ** >( &xThrower ), pUnoI, ::cppu::getCppuType( (const Reference<
> XThrower > *)0 ) ); (*pUnoI->release)( pUnoI );
>
>                                         if (xThrower.is())
>                                         {
>                                                 TYPELIB_DANGER_RELEASE(
> pComp ); xThrower->throwException( rExc ); }
>                                 }
>                                 break;
>                         }
>                 }
>                 TYPELIB_DANGER_RELEASE( pComp );
>         }
>         throw RuntimeException(
>                 OUString( RTL_CONSTASCII_USTRINGPARAM("failed throwing
> exception generically!") ), Reference< XInterface >() );
> }
>
>
> Any guidance would be greatly appreciated.
>
> Thanks,
>
> Kevin
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@openoffice.org
> For additional commands, e-mail: dev-help@openoffice.org
>
>
> ----- End forwarded message -----


-- 
To UNSUBSCRIBE, email to debian-openoffice-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: