[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