[Libreoffice-commits] core.git: vcl/source

Stephan Bergmann sbergman at redhat.com
Wed Jun 28 14:14:44 UTC 2017


 vcl/source/uitest/uno/uiobject_uno.cxx |   14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

New commits:
commit 4cfcc3de24d13efb2690d133f963df58e1479cfc
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jun 28 16:12:05 2017 +0200

    Call ~Idle with SolarMutex locked
    
    ...may be the cause for rather frequent UITest failures on Jenkins bot
    lo_tb_master_linux_dbg, like
    <https://ci.libreoffice.org/job/lo_tb_master_linux_dbg/14067/console> during
    UITest_calc_demo:
    
    > Thread 1 (Thread 0x2b2622036700 (LWP 12315)):
    > #0  0x00002b2604d495eb in Task::~Task() (this=0x2b2622034f90, __in_chrg=<optimized out>) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/vcl/source/app/scheduler.cxx:362
    > #1  0x00002b2604d7cddc in Timer::~Timer() (this=0x2b2622034f90, __in_chrg=<optimized out>) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/vcl/source/app/timer.cxx:73
    > #2  0x00002b26047eb25a in Idle::~Idle() (this=0x2b2622034f90, __in_chrg=<optimized out>) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/include/vcl/idle.hxx:30
    > #3  0x00002b2604e900fd in UIObjectUnoObj::executeAction(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (this=0x304ce50, rAction="TYPE", rPropValues=uno::Sequence of length 1 = {...}) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/vcl/source/uitest/uno/uiobject_uno.cxx:118
    >         aIdle = {<Timer> = {<Task> = {_vptr.Task = 0x2b2605888c10 <vtable for Task+16>, mpSchedulerData = 0x0, mpDebugName = 0x2b2605264160 "UI Test Idle Handler", mePriority = HIGH, mbActive = false}, maInvokeHandler = {function_ = 0x2b2604e8fa66 <(anonymous namespace)::ExecuteWrapper::LinkStubExecuteActionHdl(void*, Timer*)>, instance_ = 0x2de91c0}, mnTimeout = 1, mbAuto = false}, <No data fields>}
    >         func = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x27aafc0, _M_const_object = 0x27aafc0, _M_function_pointer = 0x27aafc0, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x27aafc0, this adjustment 38138176}, _M_pod_data = "\300\257z\002\000\000\000\000@\361E\002\000\000\000"}, _M_manager = 0x2b2604e90ac7 <std::_Function_base::_Base_manager<UIObjectUnoObj::executeAction(const rtl::OUString&, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&)::__lambda0>::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x2b2604e90aa5 <std::_Function_handler<void(), UIObjectUnoObj::executeAction(const rtl::OUString&, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&)::__lambda0>::_M_invoke(const std::_Any_data &)>}
    >         lk = {_M_device = 0x304cef0, _M_owns = true}
    >         pWrapper = 0x2de91c0
    > #4  0x00002b261d76951d in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) (pThis=0x304cea0, nVtableIndex=4, pRegisterReturn=0x0, pReturnTypeRef=0x16b42c0, bSimpleReturn=true, pStack=0x2b2622035160, nStack=0, pGPR=0x2b26220352d0, pFPR=0x2b2622035300) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:133
    >         data = {pMethod = 47442291130818, pStack = 0x2b2622035160, nStack = 0, pGPR = 0x2b26220352d0, pFPR = 0x2b2622035300, rax = 47442779394304, rdx = 47442779394256, xmm0 = 2.3439542265158875e-310, xmm1 = 2.343984744210869e-310}
    >         pMethod = 47442301612736
    > #5  0x00002b261d76815c in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, typelib_TypeDescriptionReference*, sal_Int32, typelib_MethodParameter*, void*, void**, uno_Any**) (pThis=0x27ade30, aVtableSlot=..., pReturnTypeRef=0x16b42c0, nParams=2, pParams=0x27b0850, pUnoReturn=0x0, pUnoArgs=0x2eecbc0, ppUnoExc=0x2b2622035488) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:237
    >         pStack = 0x2b2622035160
    >         pFPR = {2.3439847442227266e-310, 2.3439819402763736e-310, 8.4879831638610893e-314, 2.3439847442246535e-310, 2.0565652466724057e-316, -2.1644405065794623e-51, 2.3439847442250981e-310, 0}
    >         __PRETTY_FUNCTION__ = "void cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, typelib_TypeDescriptionReference*, sal_Int32, typelib_MethodParameter*, void*, void**, uno_Any**)"
    >         pCppArgs = 0x2b2622035120
    >         pStackStart = 0x2b2622035160
    >         pGPR = {50646688, 41629936, 47442779394304, 47442703110834, 0, 41625344}
    >         nTempIndices = 1
    >         nFPR = 0
    >         pAdjustedThisPtr = 0x304cea0
    >         ppTempParamTypeDescr = 0x2b2622035140
    >         nGPR = 3
    >         pReturnTypeDescr = 0x16b42c0
    >         pCppReturn = 0x0
    >         bSimpleReturn = true
    >         pTempIndices = 0x2b2622035130
    > #6  0x00002b261d768bdb in bridges::cpp_uno::shared::unoInterfaceProxyDispatch(_uno_Interface*, _typelib_TypeDescription const*, void*, void**, _uno_Any**) (pUnoI=0x27ade30, pMemberDescr=0x27b2700, pReturn=0x0, pArgs=0x2eecbc0, ppException=0x2b2622035488) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:425
    >         nMemberPos = 4
    >         aVtableSlot = {offset = 0, index = 4}
    >         pThis = 0x27ade30
    >         pTypeDescr = 0x27aeab0
    >         __PRETTY_FUNCTION__ = "void bridges::cpp_uno::shared::unoInterfaceProxyDispatch(uno_Interface*, const typelib_TypeDescription*, void*, void**, uno_Any**)"
    > #7  0x00002b261ea0ff28 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const (this=0x17eaec0, returnValue=0x2b26220358a0, outArguments=0x2b2622035920) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/binaryurp/source/incomingrequest.cxx:242
    >         exc = <error reading variable: Cannot access memory at address 0x7261686320747376>
    >         pexc = 0x2b26220354b0
    >         retType = {_pTypeDescr = 0x16b42c0}
    >         nSize = 0
    >         retBuf = std::__debug::vector of length 0, capacity 0
    >         outBufs = empty std::__debug::list
    >         args = std::__debug::vector of length 2, capacity 2 = {0x27b38f0, 0x27b3908}
    >         __PRETTY_FUNCTION__ = "bool binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny>*) const"
    >         isExc = false
    > #8  0x00002b261ea0ed16 in binaryurp::IncomingRequest::execute() const (this=0x17eaec0) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/binaryurp/source/incomingrequest.cxx:79
    >         resetCc = true
    >         oldCc = {m_pUnoI = 0x0}
    >         ret = {data_ = _uno_Any(void)}
    >         outArgs = std::__debug::vector of length 0, capacity 0
    >         isExc = false
    > #9  0x00002b261ea2f7a4 in binaryurp::(anonymous namespace)::request(void*) (pThreadSpecificData=0x17eaec0) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/binaryurp/source/reader.cxx:85
    >         __PRETTY_FUNCTION__ = "void binaryurp::{anonymous}::request(void*)"
    > #10 0x00002b25fd2edf5f in cppu_threadpool::JobQueue::enter(long, bool) (this=0x2d036e0, nDisposeId=41587312, bReturnWhenNoJob=true) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/cppu/source/threadpool/jobqueue.cxx:107
    >         guard = {pT = 0x2d036e0}
    >         job = {pThreadSpecificData = 0x17eaec0, doRequest = 0x2b261ea2f73b <binaryurp::(anonymous namespace)::request(void*)>}
    >         pReturn = 0x0
    > #11 0x00002b25fd2f2bfd in cppu_threadpool::ORequestThread::run() (this=0x27a9270) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/cppu/source/threadpool/thread.cxx:172
    > #12 0x00002b25fd2f312b in osl::threadFunc(void*) (param=0x27a9280) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/include/osl/thread.hxx:185
    >         pObj = 0x27a9280
    > #13 0x00002b25f9a194a5 in osl_thread_start_Impl(void*) (pData=0x27a9540) at /home/tdf/lode/jenkins/workspace/lo_tb_master_linux_dbg/sal/osl/unx/thread.cxx:237
    >         terminate = false
    >         pImpl = 0x27a9540
    >         __PRETTY_FUNCTION__ = "void* osl_thread_start_Impl(void*)"
    > #14 0x00002b25fa404dc5 in start_thread () at /lib64/libpthread.so.0
    > #15 0x00002b25fa131ced in clone () at /lib64/libc.so.6
    
    Change-Id: Iad8402ce9fd3315b7446d6274a4fe18f8e8012fd

diff --git a/vcl/source/uitest/uno/uiobject_uno.cxx b/vcl/source/uitest/uno/uiobject_uno.cxx
index c69988154653..90205a5dff8e 100644
--- a/vcl/source/uitest/uno/uiobject_uno.cxx
+++ b/vcl/source/uitest/uno/uiobject_uno.cxx
@@ -10,6 +10,7 @@
 #include <memory>
 #include "uiobject_uno.hxx"
 #include <utility>
+#include <o3tl/make_unique.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/idle.hxx>
 
@@ -115,9 +116,9 @@ void SAL_CALL UIObjectUnoObj::executeAction(const OUString& rAction, const css::
     mAction = rAction;
     mPropValues = rPropValues;
     mReady = false;
-    Idle aIdle;
-    aIdle.SetDebugName("UI Test Idle Handler");
-    aIdle.SetPriority(TaskPriority::HIGH);
+    auto aIdle = o3tl::make_unique<Idle>();
+    aIdle->SetDebugName("UI Test Idle Handler");
+    aIdle->SetPriority(TaskPriority::HIGH);
 
     std::function<void()> func = [this](){
 
@@ -136,14 +137,17 @@ void SAL_CALL UIObjectUnoObj::executeAction(const OUString& rAction, const css::
 
     ExecuteWrapper* pWrapper = new ExecuteWrapper(func, LINK(this, UIObjectUnoObj, NotifyHdl));
     std::unique_lock<std::mutex>(pWrapper->getMutex());
-    aIdle.SetInvokeHandler(LINK(pWrapper, ExecuteWrapper, ExecuteActionHdl));
+    aIdle->SetInvokeHandler(LINK(pWrapper, ExecuteWrapper, ExecuteActionHdl));
     {
         SolarMutexGuard aGuard;
-        aIdle.Start();
+        aIdle->Start();
     }
 
     cv.wait(lk, [this]{return mReady;});
     pWrapper->setSignal();
+
+    SolarMutexGuard aGuard;
+    aIdle.reset();
 }
 
 css::uno::Sequence<css::beans::PropertyValue> UIObjectUnoObj::getState()


More information about the Libreoffice-commits mailing list