Looks pretty normal ;-) (gdb) bt #0 0x00007ffff7464187 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #1 0x00007ffff7465538 in __GI_abort () at abort.c:78 #2 0x00007ffff745d126 in __assert_fail_base (fmt=0x7ffff7592858 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7fffefb11b10 "ImplGetSVData()->mpDefInst->CheckYieldMutex() && \"SolarMutex not locked\"", file=file@entry=0x7fffefb11ad8 "/data/opt/libreoffice/master/vcl/source/app/dbggui.cxx", line=line@entry=47, function=function@entry=0x7fffefb12180 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:92 #3 0x00007ffff745d1d2 in __GI___assert_fail (assertion=0x7fffefb11b10 "ImplGetSVData()->mpDefInst->CheckYieldMutex() && \"SolarMutex not locked\"", file=0x7fffefb11ad8 "/data/opt/libreoffice/master/vcl/source/app/dbggui.cxx", line=47, function=0x7fffefb12180 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:101 #4 0x00007fffef75a4f7 in ImplDbgTestSolarMutex() () at /data/opt/libreoffice/master/vcl/source/app/dbggui.cxx:47 #5 0x00007ffff086c8be in DbgFunc(unsigned short, void*) (nAction=3, pParam=0x0) at /data/opt/libreoffice/master/tools/source/debug/debug.cxx:74 #6 0x00007ffff2ff7601 in SfxBroadcaster::AddListener(SfxListener&) (this=0x2921520, rListener=...) at /data/opt/libreoffice/master/svl/source/notify/SfxBroadcaster.cxx:95 #7 0x00007ffff3009c99 in SfxListener::StartListening(SfxBroadcaster&, bool) (this=0x3358638, rBroadcaster=..., bPreventDups=false) at /data/opt/libreoffice/master/svl/source/notify/lstner.cxx:81 #8 0x00007fffcd6e0071 in accessibility::AccessibleEmptyEditSource::AccessibleEmptyEditSource(SdrObject&, SdrView&, vcl::Window const&) (this=0x3358630, rObj=..., rView=..., rViewWindow=...) at /data/opt/libreoffice/master/svx/source/accessibility/AccessibleEmptyEditSource.cxx:232 #9 0x00007fffcd6e8f93 in accessibility::AccessibleShape::Init() (this=0x33548e0) at /data/opt/libreoffice/master/svx/source/accessibility/AccessibleShape.cxx:175 #10 0x00007fffcd6d21e4 in accessibility::AccessibleControlShape::Init() (this=0x33548e0) at /data/opt/libreoffice/master/svx/source/accessibility/AccessibleControlShape.cxx:162 #11 0x00007fffce3b94c4 in SwAccessibleMap::ReplaceChild(accessibility::AccessibleShape*, com::sun::star::uno::Reference<com::sun::star::drawing::XShape> const&, long, accessibility::AccessibleShapeTreeInfo const&) (this=0x2b0ed50, pCurrentChild=0x0, _rxShape=empty uno::Reference) at /data/opt/libreoffice/master/sw/source/core/access/accmap.cxx:3211 #12 0x00007fffcd6d3e1d in accessibility::AccessibleControlShape::modeChanged(com::sun::star::util::ModeChangeEvent const&) (this=0x285f960, _rSource=...) at /data/opt/libreoffice/master/svx/source/accessibility/AccessibleControlShape.cxx:481 #13 0x00007ffff0e271f9 in cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::star::util::XModeChangeListener, com::sun::star::util::ModeChangeEvent>::operator()(com::sun::star::uno::Reference<com::sun::star::util::XModeChangeListener> const&) const (this=0x7fffb7461ec0, listener=uno::Reference to (accessibility::AccessibleControlShape *) 0x285fad8) at /data/opt/libreoffice/master/include/cppuhelper/interfacecontainer.h:274 #14 0x00007ffff0e25ac2 in cppu::OInterfaceContainerHelper::forEach<com::sun::star::util::XModeChangeListener, cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::star::util::XModeChangeListener, com::sun::star::util::ModeChangeEvent> >(cppu::OInterfaceContainerHelper::NotifySingleListener<com::sun::star::util::XModeChangeListener, com::sun::star::util::ModeChangeEvent> const&) (this=0x2860120, func=...) at /data/opt/libreoffice/master/include/cppuhelper/interfacecontainer.h:287 #15 0x00007ffff0e23be0 in cppu::OInterfaceContainerHelper::notifyEach<com::sun::star::util::XModeChangeListener, com::sun::star::util::ModeChangeEvent>(void (com::sun::star::util::XModeChangeListener::*)(com::sun::star::util::ModeChangeEvent const&), com::sun::star::util::ModeChangeEvent const&) (this=0x2860120, NotificationMethod=&virtual com::sun::star::util::XModeChangeListener::modeChanged(com::sun::star::util::ModeChangeEvent const&), Event=...) at /data/opt/libreoffice/master/include/cppuhelper/interfacecontainer.h:300 #16 0x00007ffff0e1f945 in UnoControl::setDesignMode(unsigned char) (this=0x285ff00, bOn=0 '\000') at /data/opt/libreoffice/master/toolkit/source/controls/unocontrol.cxx:1411 #17 0x00007fffbb4e9a86 in frm::OControl::setDesignMode(unsigned char) (this=0x2b094e0, bOn=0 '\000') at /data/opt/libreoffice/master/forms/source/component/FormComponent.cxx:319 #18 0x00007fffdad9f1ca in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) (pThis=0x2b09548, nVtableIndex=13, pRegisterReturn=0x0, pReturnTypeRef=0x6eddd0, bSimpleReturn=true, pStack=0x7fffb7462140, nStack=0, pGPR=0x7fffb74621a0, pFPR=0x7fffb74621d0) at /data/opt/libreoffice/master/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:133 #19 0x00007fffdad9e18d in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, typelib_TypeDescriptionReference*, sal_Int32, typelib_MethodParameter*, void*, void**, uno_Any**) (pThis=0x33d3ee0, aVtableSlot=..., pReturnTypeRef=0x6eddd0, nParams=1, pParams=0x3351fd0, pUnoReturn=0x0, pUnoArgs=0x2cf86c0, ppUnoExc=0x7fffb7462558) at /data/opt/libreoffice/master/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:245 #20 0x00007fffdad9eb32 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch(_uno_Interface*, _typelib_TypeDescription const*, void*, void**, _uno_Any**) (pUnoI=0x33d3ee0, pMemberDescr=0x3358230, pReturn=0x0, pArgs=0x2cf86c0, ppException=0x7fffb7462558) at /data/opt/libreoffice/master/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:443 #21 0x00007fffd6da8ec0 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, std::__debug::vector<binaryurp::BinaryAny, std::allocator<binaryurp::BinaryAny> >*) const (this=0x33577c0, returnValue=0x7fffb74629b0, outArguments=0x7fffb7462920) at /data/opt/libreoffice/master/binaryurp/source/incomingrequest.cxx:241 #22 0x00007fffd6da7d9d in binaryurp::IncomingRequest::execute() const (this=0x33577c0) at /data/opt/libreoffice/master/binaryurp/source/incomingrequest.cxx:73 #23 0x00007fffd6dc581b in binaryurp::(anonymous namespace)::request(void*) (pThreadSpecificData=0x33577c0) at /data/opt/libreoffice/master/binaryurp/source/reader.cxx:85 #24 0x00007ffff5710279 in cppu_threadpool::JobQueue::enter(long, bool) (this=0x3357190, nDisposeId=47588160, bReturnWhenNoJob=true) at /data/opt/libreoffice/master/cppu/source/threadpool/jobqueue.cxx:107 #25 0x00007ffff57136f0 in cppu_threadpool::ORequestThread::run() (this=0x2d62340) at /data/opt/libreoffice/master/cppu/source/threadpool/thread.cxx:172 #26 0x00007ffff5713b25 in osl::threadFunc(void*) (param=0x2d62350) at /data/opt/libreoffice/master/include/osl/thread.hxx:185 #27 0x00007ffff7b9da1a in osl_thread_start_Impl(void*) (pData=0x28c6140) at /data/opt/libreoffice/master/sal/osl/unx/thread.cxx:240 #28 0x00007ffff721a0a4 in start_thread (arg=0x7fffb7463700) at pthread_create.c:309 #29 0x00007ffff751408d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 from a: make gb_JunitTest_DEBUGRUN=T JunitTest_forms_unoapi_2 from git hash: 1fd41f43eb73c373cb94d32d82c5fb7a7e243367 (a bit old but perhaps useful).
(In reply to Michael Meeks from comment #0) #16 0x00007ffff0e1f945 in UnoControl::setDesignMode(unsigned char) (this=0x285ff00, bOn=0 '\000') at /data/opt/libreoffice/master/toolkit/source/controls/unocontrol.cxx:1411 > #17 0x00007fffbb4e9a86 in frm::OControl::setDesignMode(unsigned char) > (this=0x2b094e0, bOn=0 '\000') at > /data/opt/libreoffice/master/forms/source/component/FormComponent.cxx:319 > #18 0x00007fffdad9f1ca in gcc3::callVirtualMethod(void*, unsigned int, > void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned > int, unsigned long*, double*) (pThis=0x2b09548, nVtableIndex=13, > pRegisterReturn=0x0, pReturnTypeRef=0x6eddd0, bSimpleReturn=true, > pStack=0x7fffb7462140, nStack=0, pGPR=0x7fffb74621a0, pFPR=0x7fffb74621d0) > at > /data/opt/libreoffice/master/bridges/source/cpp_uno/gcc3_linux_x86-64/ > callvirtualmethod.cxx:133 So this is the entry point from outside via UNO and setDesignMode() as a function that is usable from the outside world should ensure to lock the SolarMutex. OControl::setDesignMode(unsigned char) should might be able to cheat and postpone that as it itself is only using UNO calls. I havent checked if all the further stackframes until #12 are pure UNO, but assuming so for now. But at: > #12 0x00007fffcd6d3e1d in > accessibility::AccessibleControlShape::modeChanged(com::sun::star::util::ModeChangeEvent > const&) (this=0x285f960, _rSource=...) at /data/opt/libreoffice/master > /svx/source/accessibility/AccessibleControlShape.cxx:481 just before the ReplaceChild() call, it needs a SolarMutexGuard as "modeChanged" is a UNO function and ReplaceChild is not (and thus the former cant assume to hold the SolarMutex, while the latter should assume to hold the SolarMutex). At least that's my take on this from a quick look.
Bjoern Michaelsen committed a patch related to this issue. It has been pushed to "master": http://cgit.freedesktop.org/libreoffice/core/commit/?id=c1258abe50f1508ea0f628ff963bc1914ab86b67 tdf#96365: ensure holding SolarMutex before triggering core code It will be available in 5.2.0. The patch should be included in the daily builds available at http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: http://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback.
Hi, Is this bug fixed? If so, could you please close it? Regards
Fixed thanks to Bjoern ! =) closing.