https://bugs.documentfoundation.org/show_bug.cgi?id=114676

Mike Kaganski <mikekagan...@hotmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |glo...@fbihome.de

--- Comment #7 from Mike Kaganski <mikekagan...@hotmail.com> ---
This must be regression from
https://cgit.freedesktop.org/libreoffice/core/commit/?id=d3ae94f04e0cfeba49f5e0de66848743391fc336

> author        Jan-Marek Glogowski <glo...@fbihome.de> 2017-10-13 18:55:01 
> +0200
> committer     Jan-Marek Glogowski <glo...@fbihome.de> 2017-10-13 18:55:15 
> +0200
> commit        d3ae94f04e0cfeba49f5e0de66848743391fc336
> tree  9579d3f258edcf5e60d67891912c783fc5b97b0a
> parent        3ea6d0620d34c14950c5b1a25af801efd7fde492
> Don't crash on extension update check
> We don't need to release the SolarMutex, as we don't own it.

The commit removed SolarMutexReleaser from UUIInteractionHelper::handleRequest
and UUIInteractionHelper::getStringFromRequest.

The hang occurs with deadlock between main thread waiting for solar mutex, and
a worker thread (holding the mutex) trying to handle request in main thread.

Main thread call stack:

> win32u.dll!NtUserMsgWaitForMultipleObjectsEx()
> user32.dll!RealMsgWaitForMultipleObjectsEx()
> sal3.dll!osl_waitCondition(void * Condition, const TimeValue * pTimeout) Line 
> 82
> vcllo.dll!osl::Condition::wait(const TimeValue * pTimeout) Line 120
> vcllo.dll!SalYieldMutex::doAcquire(unsigned long nLockCount) Line 147
> comphelper.dll!comphelper::SolarMutex::acquire(unsigned long nLockCount) Line 
> 73
> vcllo.dll!WinSalInstance::AcquireYieldMutex(unsigned long nCount) Line 451
> vcllo.dll!Application::AcquireSolarMutex(unsigned long nCount) Line 568
> vcllo.dll!SolarMutexReleaser::~SolarMutexReleaser() Line 1474
> vcllo.dll!WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents) 
> Line 560
> vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents) Line 469
> vcllo.dll!Application::Yield() Line 535
> vcllo.dll!Application::Execute() Line 449
> sofficeapp.dll!desktop::Desktop::Main() Line 1622
> vcllo.dll!ImplSVMain() Line 194
> vcllo.dll!SVMain() Line 233
> sofficeapp.dll!soffice_main() Line 166
> soffice.bin!sal_main() Line 48
> soffice.bin!main(int argc, char * * argv) Line 47
> soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int 
> _nshow) Line 47
> soffice.bin!invoke_main() Line 99
> soffice.bin!__scrt_common_main_seh() Line 253
> soffice.bin!__scrt_common_main() Line 296
> soffice.bin!WinMainCRTStartup() Line 17
> kernel32.dll!BaseThreadInitThunk()
> ntdll.dll!RtlUserThreadStart()

Worker thread call stack:

> win32u.dll!NtUserMsgWaitForMultipleObjectsEx()
> user32.dll!RealMsgWaitForMultipleObjectsEx()
> sal3.dll!osl_waitCondition(void * Condition, const TimeValue * pTimeout) Line 
> 82
> uuilo.dll!osl::Condition::wait(const TimeValue * pTimeout) Line 120
> uuilo.dll!UUIInteractionHelper::handleRequest(const 
> com::sun::star::uno::Reference<com::sun::star::task::XInteractionRequest> & 
> rRequest) Line 176
> uuilo.dll!`anonymous namespace'::UUIInteractionHandler::handle(const 
> com::sun::star::uno::Reference<com::sun::star::task::XInteractionRequest> & 
> rRequest) Line 138
> dbalo.dll!dbaccess::ODatabaseSource::connectWithCompletion(const 
> com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler> & 
> _rxHandler, bool _bIsolated) Line 1094
> dbalo.dll!dbaccess::ODatabaseSource::connectWithCompletion(const 
> com::sun::star::uno::Reference<com::sun::star::task::XInteractionHandler> & 
> _rxHandler) Line 1032
> dbulo.dll!dbaui::ODatasourceConnector::connect(const 
> com::sun::star::uno::Reference<com::sun::star::sdbc::XDataSource> & 
> _xDataSource, dbtools::SQLExceptionInfo * _pErrorInfo) Line 136
> dbulo.dll!dbaui::ODatasourceConnector::connect(const rtl::OUString & 
> _rDataSourceName, dbtools::SQLExceptionInfo * _pErrorInfo) Line 90
> dbulo.dll!dbaui::OGenericUnoController::connect(const rtl::OUString & 
> _rDataSourceName, const rtl::OUString & _rContextInformation, 
> dbtools::SQLExceptionInfo * _pErrorInfo) Line 929
> dbulo.dll!dbaui::OApplicationController::ensureConnection(dbtools::SQLExceptionInfo
>  * _pErrorInfo) Line 357
> dbulo.dll!dbaui::OApplicationController::connect() Line 326
> mscx_uno.dll!`anonymous 
> namespace'::cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy * pThis, 
> bridges::cpp_uno::shared::VtableSlot aVtableSlot, 
> _typelib_TypeDescriptionReference * pReturnTypeRef, long nParams, 
> _typelib_MethodParameter * pParams, void * pUnoReturn, void * * pUnoArgs, 
> _uno_Any * * ppUnoExc) Line 214
> mscx_uno.dll!unoInterfaceProxyDispatch(_uno_Interface * pUnoI, const 
> _typelib_TypeDescription * pMemberTD, void * pReturn, void * * pArgs, 
> _uno_Any * * ppException) Line 429
> reflectionlo.dll!stoc_corefl::IdlInterfaceMethodImpl::invoke(const 
> com::sun::star::uno::Any & rObj, 
> com::sun::star::uno::Sequence<com::sun::star::uno::Any> & rArgs) Line 688
> sblo.dll!SbUnoObject::Notify(SfxBroadcaster & rBC, const SfxHint & rHint) 
> Line 2226
> svllo.dll!SfxBroadcaster::Broadcast(const SfxHint & rHint) Line 50
> sblo.dll!SbxVariable::Broadcast(SfxHintId nHintId) Line 182
> sblo.dll!SbxValue::SbxValue(const SbxValue & r) Line 62
> sblo.dll!SbxVariable::SbxVariable(const SbxVariable & r) Line 66
> sblo.dll!SbxMethod::SbxMethod(const SbxMethod & r) Line 867
> sblo.dll!SbiRuntime::FindElement(SbxObject * pObj, unsigned long nOp1, 
> unsigned long nOp2, ErrCode nNotFound, bool bLocal, bool bStatic) Line 3507
> sblo.dll!SbiRuntime::StepELEM(unsigned long nOp1, unsigned long nOp2) Line 
> 3982
> sblo.dll!SbiRuntime::Step() Line 769
> sblo.dll!SbModule::Run(SbMethod * pMeth) Line 1144
> sblo.dll!SbModule::Notify(SfxBroadcaster & rBC, const SfxHint & rHint) Line 
> 810
> svllo.dll!SfxBroadcaster::Broadcast(const SfxHint & rHint) Line 50
> sblo.dll!SbMethod::Broadcast(SfxHintId nHintId) Line 2114
> sblo.dll!SbxValue::Get(SbxValues & rRes) Line 285
> sblo.dll!SbMethod::Call(SbxValue * pRet, SbxVariable * pCaller) Line 2071
> basprovlo.dll!basprov::BasicScriptImpl::invoke(const 
> com::sun::star::uno::Sequence<com::sun::star::uno::Any> & aParams, 
> com::sun::star::uno::Sequence<short> & aOutParamIndex, 
> com::sun::star::uno::Sequence<com::sun::star::uno::Any> & aOutParam) Line 234
> protocolhandlerlo.dll!scripting_protocolhandler::ScriptProtocolHandler::dispatchWithNotification(const
>  com::sun::star::util::URL & aURL, const 
> com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArgs, 
> const 
> com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener>
>  & xListener) Line 212
> protocolhandlerlo.dll!scripting_protocolhandler::ScriptProtocolHandler::dispatch(const
>  com::sun::star::util::URL & aURL, const 
> com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArgs) 
> Line 302
> dbalo.dll!dbaccess::`anonymous namespace'::lcl_dispatchScriptURL_throw(const 
> dbaccess::DocumentEventExecutor_Data & _rDocExecData, const rtl::OUString & 
> _rScriptURL, const com::sun::star::document::DocumentEvent & _rTrigger) Line 
> 109
> dbalo.dll!dbaccess::DocumentEventExecutor::documentEventOccured(const 
> com::sun::star::document::DocumentEvent & Event) Line 182
> dbalo.dll!comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener,com::sun::star::document::DocumentEvent>::operator()(const
>  
> com::sun::star::uno::Reference<com::sun::star::document::XDocumentEventListener>
>  & listener) Line 273
> dbalo.dll!comphelper::OInterfaceContainerHelper2::forEach<com::sun::star::document::XDocumentEventListener,comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener,com::sun::star::document::DocumentEvent>
>  >(const 
> comphelper::OInterfaceContainerHelper2::NotifySingleListener<com::sun::star::document::XDocumentEventListener,com::sun::star::document::DocumentEvent>
>  & func) Line 285
> dbalo.dll!comphelper::OInterfaceContainerHelper2::notifyEach<com::sun::star::document::XDocumentEventListener,com::sun::star::document::DocumentEvent>(void(com::sun::star::document::XDocumentEventListener::*)(const
>  com::sun::star::document::DocumentEvent &) NotificationMethod, const 
> com::sun::star::document::DocumentEvent & Event) Line 299
> dbalo.dll!dbaccess::DocumentEventNotifier_Impl::impl_notifyEvent_nothrow(const
>  com::sun::star::document::DocumentEvent & _rEvent) Line 196
> dbalo.dll!dbaccess::DocumentEventNotifier_Impl::processEvent(const 
> comphelper::AnyEvent & _rEvent) Line 230
> comphelper.dll!comphelper::AsyncEventNotifierBase::execute() Line 158
> comphelper.dll!comphelper::AsyncEventNotifierAutoJoin::run() Line 258
> comphelper.dll!threadFunc(void * param) Line 186
> sal3.dll!oslWorkerWrapperFunction(void * pData) Line 58
> ucrtbased.dll!invoke_thread_procedure(unsigned int(*)(void *) procedure, void 
> * const context) Line 92
> ucrtbased.dll!thread_start<unsigned int (__cdecl*)(void * __ptr64)>(void * 
> const parameter) Line 115
> kernel32.dll!BaseThreadInitThunk()
> ntdll.dll!RtlUserThreadStart()

Adding Jan-Marek: could you please take a look at this?

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
Libreoffice-bugs@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to