Kaydet (Commit) 22fbbfe9 authored tarafından Michael Stahl's avatar Michael Stahl

Revert "Avoid deadlock when two threads call into Frame::close"

This reverts commit d2a59bb5.

Ironically causes a different deadlock, with a non-main thread holding
SolarMutex and blocked in SendMessage, and main thread dropping
SolarMutex now and blocking with SalYieldMutex::acquire() instead of
ImplSalYieldMutexAcquireWithWait().

vcllo.dll!SalYieldMutex::acquire() Line 139
vcllo.dll!SolarMutexGuard::SolarMutexGuard() Line 1477
tklo.dll!VCLXWindow::removeFocusListener(const com::sun::star::uno::Reference<com::sun::star::awt::XFocusListener> & rxListener) Line 1066
fwklo.dll!`anonymous namespace'::Frame::implts_stopWindowListening() Line 3042
fwklo.dll!`anonymous namespace'::Frame::setComponent(const com::sun::star::uno::Reference<com::sun::star::awt::XWindow> & xComponentWindow, const com::sun::star::uno::Reference<com::sun::star::frame::XController> & xController) Line 1508
fwklo.dll!`anonymous namespace'::Frame::close(unsigned char bDeliverOwnership) Line 1770
sfxlo.dll!SfxViewFrame::Exec_Impl(SfxRequest & rReq) Line 261
sfxlo.dll!SfxStubSfxViewFrameExec_Impl(SfxShell * pShell, SfxRequest & rReq) Line 706
sfxlo.dll!SfxShell::CallExec(void (SfxShell *, SfxRequest &) * pFunc, SfxRequest & rReq) Line 204
sfxlo.dll!SfxDispatcher::Call_Impl(SfxShell & rShell, const SfxSlot & rSlot, SfxRequest & rReq, bool bRecord) Line 265
sfxlo.dll!SfxDispatcher::PostMsgHandler(SfxRequest * pReq) Line 1088
sfxlo.dll!SfxDispatcher::LinkStubPostMsgHandler(void * instance, SfxRequest * data) Line 1065
sfxlo.dll!Link<SfxRequest *,void>::Call(SfxRequest * data) Line 84
sfxlo.dll!SfxHintPoster::DoEvent_Impl(void * pPostedHint) Line 45
sfxlo.dll!SfxHintPoster::LinkStubDoEvent_Impl(void * instance, void * data) Line 42
vcllo.dll!Link<void *,void>::Call(void * data) Line 84
vcllo.dll!ImplHandleUserEvent(ImplSVEvent * pSVEvent) Line 1959
vcllo.dll!ImplWindowFrameProc(vcl::Window * _pWindow, unsigned short nEvent, const void * pEvent) Line 2524
vcllo.dll!SalFrame::CallCallback(unsigned short nEvent, const void * pEvent) Line 273
vcllo.dll!ImplHandleUserEvent(HWND__ * hWnd, long lParam) Line 4111
vcllo.dll!SalFrameWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam, int & rDef) Line 5767

Change-Id: Iba97daf9cc90028c3b0ef693f928affa32bf5a0e
üst 45f683a4
...@@ -255,7 +255,6 @@ void SfxViewFrame::Exec_Impl(SfxRequest &rReq ) ...@@ -255,7 +255,6 @@ void SfxViewFrame::Exec_Impl(SfxRequest &rReq )
pDocSh->SetModified( false ); pDocSh->SetModified( false );
rReq.Done(); // Must call this before Close()! rReq.Done(); // Must call this before Close()!
bClosed = false; bClosed = false;
SolarMutexReleaser rel;
try try
{ {
xTask->close(sal_True); xTask->close(sal_True);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment