On 18.02.2018 16:44, jan iversen wrote:
frame.cxx, 1270, implts_sendFrameActionEvent(
css::frame::FrameAction_FRAME_ACTIVATED );
cpp2uno.cxx, 204 (Mac version) CPPU_CURRENT_NAMESPACE::raiseException(
&aUnoExc, pThis->getBridge()->getUno2Cpp() ); // has to destruct the any
except.cxx, 290 (Mac version) void raiseException( uno_Any * pUnoExc,
uno_Mapping * pUno2Cpp )
line 341 in raisException: __cxxabiv1::__cxa_throw( pCppExc, rtti,
deleteException );
calls:
exc_thrower.cxx, 205, Any SAL_CALL getCaughtException()
and then
uno2cpp.cxx, 305, unoInterfaceProxyDispatch()
as expected.
Doing the same on the device, everything is identical until
line 341 in raisException: __cxxabiv1::__cxa_throw( pCppExc, rtti,
deleteException );
which throws an exception that ends up in LoadEnv::~LoadEnv().
So in the first case the (synthetically) thrown exception is apparently
caught by some exception handler for some type T, while in the second
case that fails for whatever reason, and exception handling proceeds
past that dismissed handler, and happens to call a LoadEnv dtor during
stack unwinding.
The most likely reason for that handler for type T to be dismissed is
that, while the (synthetically) thrown exception is nominally of type T
or some type derived from it, the type info does not match. (The
libc++abi used on macOS and iOS uses the strict Itanium ABI rule of
address equivalence for RTTI equivalence.)
Does the dlsym call
rtti = static_cast<std::type_info *>(dlsym( m_hApp, symName.getStr() ));
in RTTI::getRTTI in bridges/source/cpp_uno/gcc3_ios/except.cxx fail when
it shouldn't (because the relevant RTTI is already emitted in the LO code)?
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.