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

--- Comment #8 from Michael Meeks <[email protected]> ---
Interesting; the explanation is quite 'simple' ;-) there is an ordering change
caused by the Idle re-work; and two idle handlers race each other:

an asynchronous focus handling [ huh ] ... races with the 2nd trace:

        sfxlo.dll!SfxFrameWindow_Impl::GetFocus() Line 174      C++
        vcllo.dll!vcl::Window::CompatGetFocus() Line 3975       C++
        vcllo.dll!vcl::Window::ImplGrabFocus(unsigned short nFlags) Line 388   
C++
        vcllo.dll!vcl::Window::GrabFocus() Line 3153    C++
        tklo.dll!VCLXWindow::setFocus() Line 1024       C++
        fwklo.dll!`anonymous namespace'::Frame::focusGained(const
com::sun::star::awt::FocusEvent & aEvent) Line 2346   C++
        tklo.dll!FocusListenerMultiplexer::focusGained(const
com::sun::star::awt::FocusEvent & evt) Line 76     C++
        tklo.dll!VCLXWindow::ProcessWindowEvent(const VclWindowEvent &
rVclWindowEvent) Line 587        C++
        tklo.dll!VCLXWindow::WindowEventListener(VclSimpleEvent * pEvent) Line
419      C++
        tklo.dll!VCLXWindow::LinkStubWindowEventListener(void * instance, void
* data) Line 408 C++
        vcllo.dll!Link<void *,long>::Call(void * data) Line 127 C++
        vcllo.dll!VclEventListeners::Call(VclSimpleEvent * pEvent) Line 64     
C++
        vcllo.dll!vcl::Window::CallEventListeners(unsigned long nEvent, void *
pData) Line 217  C++
        vcllo.dll!vcl::Window::PreNotify(NotifyEvent & rNEvt) Line 71   C++
        vcllo.dll!SystemWindow::PreNotify(NotifyEvent & rNEvt) Line 185 C++
        vcllo.dll!vcl::Window::CompatPreNotify(NotifyEvent & rNEvt) Line 3998  
C++
        vcllo.dll!ImplCallPreNotify(NotifyEvent & rEvt) Line 61 C++
        vcllo.dll!vcl::Window::ImplGrabFocus(unsigned short nFlags) Line 386   
C++
        vcllo.dll!vcl::Window::GrabFocus() Line 3153    C++
        vcllo.dll!vcl::Window::ImplAsyncFocusHdl(void * __formal) Line 1806    
C++
        vcllo.dll!vcl::Window::LinkStubImplAsyncFocusHdl(void * instance, void
* data) Line 1782        C++
        vcllo.dll!Link<void *,long>::Call(void * data) Line 127 C++
        vcllo.dll!ImplHandleUserEvent(ImplSVEvent * pSVEvent) Line 2041 C++
        vcllo.dll!ImplWindowFrameProc(vcl::Window * _pWindow, SalFrame *
__formal, unsigned short nEvent, const void * pEvent) Line 2593        C++
        vcllo.dll!SalFrame::CallCallback(unsigned short nEvent, const void *
pEvent) Line 247   C++
        vcllo.dll!ImplHandleUserEvent(HWND__ * hWnd, long lParam) Line 4130    
C++
        vcllo.dll!SalFrameWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned
int wParam, long lParam, int & rDef) Line 5786     C++
        vcllo.dll!SalFrameWndProcW(HWND__ * hWnd, unsigned int nMsg, unsigned
int wParam, long lParam) Line 5945        C++
        user32.dll!_InternalCallWinProc@20()    Unknown
        user32.dll!_UserCallWinProcCheckWow@32()        Unknown
        user32.dll!_CallWindowProcAorW@24()     Unknown
        user32.dll!_CallWindowProcW@20()        Unknown
        opengl32.dll!_wglWndProc@16()   Unknown
        user32.dll!_InternalCallWinProc@20()    Unknown
        user32.dll!_UserCallWinProcCheckWow@32()        Unknown
        user32.dll!_DispatchMessageWorker@8()   Unknown
        user32.dll!_DispatchMessageW@4()        Unknown
        vcllo.dll!ImplSalDispatchMessage(tagMSG * pMsg) Line 600        C++
        vcllo.dll!ImplSalYield(bool bWait, bool bHandleAllCurrentEvents) Line
616       C++
        vcllo.dll!WinSalInstance::DoYield(bool bWait, bool
bHandleAllCurrentEvents, unsigned long nReleased) Line 676   C++
        vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents, const unsigned
long nReleased) Line 358    C++
        vcllo.dll!Application::Yield() Line 386 C++
        vcllo.dll!Application::Execute() Line 336       C++
        sofficeapp.dll!desktop::Desktop::Main() Line 1607       C++
        vcllo.dll!ImplSVMain() Line 169 C++
        vcllo.dll!SVMain() Line 207     C++
        sofficeapp.dll!soffice_main() Line 96   C++
        soffice.bin!sal_main() Line 48  C
        soffice.bin!main(int argc, char * * argv) Line 47       C
        soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int
_nshow) Line 47  C
        soffice.bin!__tmainCRTStartup() Line 618        C
        soffice.bin!WinMainCRTStartup() Line 466        C
        kernel32.dll!@BaseThreadInitThunk@12()  Unknown
        ntdll.dll!___RtlUserThreadStart@8()     Unknown
        ntdll.dll!__RtlUserThreadStart@8()      Unknown

After this - an async (?) Close_Foo ...


>       sfxlo.dll!SfxApplication::SetViewFrame_Impl(SfxViewFrame * pFrame) Line 
> 321     C++
        sfxlo.dll!SfxViewFrame::SetViewFrame(SfxViewFrame * pFrame) Line 3302  
C++
        sfxlo.dll!SfxViewFrame::Close() Line 1122       C++
        sfxlo.dll!SfxFrame::DoClose_Impl() Line 170     C++
        sfxlo.dll!SfxBaseController::dispose() Line 1030        C++
        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 1550    C++
        fwklo.dll!`anonymous namespace'::Frame::close(unsigned char
bDeliverOwnership) Line 1781        C++
        fwklo.dll!framework::pattern::frame::closeIt(const
com::sun::star::uno::Reference<com::sun::star::uno::XInterface> & xResource,
bool bDelegateOwnership) Line 80 C++
        fwklo.dll!framework::CloseDispatcher::implts_closeFrame() Line 492     
C++
        fwklo.dll!framework::CloseDispatcher::impl_asyncCallback(void *
__formal) Line 360      C++
        fwklo.dll!framework::CloseDispatcher::LinkStubimpl_asyncCallback(void *
instance, void * data) Line 244 C++
        vcllo.dll!Link<void *,long>::Call(void * data) Line 127 C++
        vcllo.dll!vcl::EventPoster::DoEvent_Impl(vcl::UserEvent * pEvent) Line
54       C++
        vcllo.dll!vcl::EventPoster::LinkStubDoEvent_Impl(void * instance, void
* data) Line 49  C++
        vcllo.dll!Link<void *,long>::Call(void * data) Line 127 C++
        vcllo.dll!ImplHandleUserEvent(ImplSVEvent * pSVEvent) Line 2041 C++
        vcllo.dll!ImplWindowFrameProc(vcl::Window * _pWindow, SalFrame *
__formal, unsigned short nEvent, const void * pEvent) Line 2593        C++
        vcllo.dll!SalFrame::CallCallback(unsigned short nEvent, const void *
pEvent) Line 247   C++
        vcllo.dll!ImplHandleUserEvent(HWND__ * hWnd, long lParam) Line 4130    
C++
        vcllo.dll!SalFrameWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned
int wParam, long lParam, int & rDef) Line 5786     C++
        vcllo.dll!SalFrameWndProcW(HWND__ * hWnd, unsigned int nMsg, unsigned
int wParam, long lParam) Line 5945        C++
        user32.dll!_InternalCallWinProc@20()    Unknown
        user32.dll!_UserCallWinProcCheckWow@32()        Unknown
        user32.dll!_CallWindowProcAorW@24()     Unknown
        user32.dll!_CallWindowProcW@20()        Unknown
        opengl32.dll!_wglWndProc@16()   Unknown
        user32.dll!_InternalCallWinProc@20()    Unknown
        user32.dll!_UserCallWinProcCheckWow@32()        Unknown
        user32.dll!_DispatchMessageWorker@8()   Unknown
        user32.dll!_DispatchMessageW@4()        Unknown
        vcllo.dll!ImplSalDispatchMessage(tagMSG * pMsg) Line 600        C++
        vcllo.dll!ImplSalYield(bool bWait, bool bHandleAllCurrentEvents) Line
616       C++
        vcllo.dll!WinSalInstance::DoYield(bool bWait, bool
bHandleAllCurrentEvents, unsigned long nReleased) Line 676   C++
        vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents, const unsigned
long nReleased) Line 358    C++
        vcllo.dll!Application::Yield() Line 386 C++
        vcllo.dll!Application::Execute() Line 336       C++
        sofficeapp.dll!desktop::Desktop::Main() Line 1607       C++
        vcllo.dll!ImplSVMain() Line 169 C++
        vcllo.dll!SVMain() Line 207     C++
        sofficeapp.dll!soffice_main() Line 96   C++
        soffice.bin!sal_main() Line 48  C
        soffice.bin!main(int argc, char * * argv) Line 47       C
        soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int
_nshow) Line 47  C
        soffice.bin!__tmainCRTStartup() Line 618        C
        soffice.bin!WinMainCRTStartup() Line 466        C
        kernel32.dll!@BaseThreadInitThunk@12()  Unknown
        ntdll.dll!___RtlUserThreadStart@8()     Unknown
        ntdll.dll!__RtlUserThreadStart@8()      Unknown


Sets that baby to zero (from another idle handler ...)

This breaks the assumption that we will always get a focus -after- the close is
done ...

What an ugly heap ! =) we need to get the ordering right (or better) to
aggressively de-lame-ify the Window/VCL <-> Sfx interaction.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs

Reply via email to