Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


JunitTest_framework_complex fails reliably for me on current master with 
assertion

  assert( mpWindowContext.is() );

failing at OpenGLSalGraphicsImpl::doFlush().

I could debug it to WinOpenGLContext::ImplInit() having m_aGLWin.hDC == 
nullptr, thus ChoosePixelFormat fails. The call stack for this point is

====
        vclplug_winlo.dll!WinOpenGLSalGraphicsImpl::CreateWinContext
        vcllo.dll!OpenGLSalGraphicsImpl::doFlush
        vcllo.dll!OpenGLFlushIdle::Invoke
        vcllo.dll!Scheduler::ProcessTaskScheduling
        vcllo.dll!Scheduler::CallbackTaskScheduling
        vcllo.dll!SalTimer::CallCallback
        vclplug_winlo.dll!WinSalTimer::ImplHandleElapsedTimer
        vclplug_winlo.dll!ImplSalYield
        vclplug_winlo.dll!WinSalInstance::DoYield
        vcllo.dll!ImplYield
        vcllo.dll!Application::Yield
        vcllo.dll!Application::Execute
        sofficeapp.dll!desktop::Desktop::Main
        vcllo.dll!ImplSVMain
        vcllo.dll!SVMain
        sofficeapp.dll!soffice_main
        soffice.bin!sal_main
        soffice.bin!main
        soffice.bin!invoke_main
        soffice.bin!__scrt_common_main_seh
        soffice.bin!__scrt_common_main
        soffice.bin!mainCRTStartup
        kernel32.dll!BaseThreadInitThunk
        ntdll.dll!RtlUserThreadStart
====

The mrWinParent.mhLocalDC is nullptr here; the nullprt value has been 
set when it was released *before that event* in 
WinSalFrame::ReleaseFrameGraphicsDC with this call stack:

====
        vclplug_winlo.dll!WinSalGraphics::setHDC
        vclplug_winlo.dll!WinSalFrame::ReleaseFrameGraphicsDC
        vclplug_winlo.dll!WinSalFrame::ReleaseGraphics
        vcllo.dll!vcl::Window::ReleaseGraphics
        vcllo.dll!vcl::Window::dispose
        vcllo.dll!ImplBorderWindow::dispose
        vcllo.dll!VclReferenceBase::disposeOnce
        vcllo.dll!VclPtr<vcl::Window>::disposeAndClear
        vcllo.dll!vcl::Window::dispose
        vcllo.dll!Control::dispose
        vcllo.dll!Edit::dispose
        vcllo.dll!SpinField::dispose
        vcllo.dll!MetricField::dispose
        vcllo.dll!VclReferenceBase::disposeOnce
        vcllo.dll!VclPtr<vcl::Window>::disposeAndClear
        vcllo.dll!VclBuilder::disposeBuilder
        vcllo.dll!VclBuilderContainer::disposeBuilder
        svxlo.dll!PanelLayout::dispose
        svxlo.dll!svx::sidebar::ParaPropertyPanel::dispose
        vcllo.dll!VclReferenceBase::disposeOnce
        sfxlo.dll!VclPtr<vcl::Window>::disposeAndClear
        sfxlo.dll!sfx2::sidebar::SidebarPanelBase::disposing
        cppuhelper3MSC.dll!cppu::WeakComponentImplHelperBase::dispose
        
sfxlo.dll!cppu::PartialWeakComponentImplHelper<com::sun::star::ui::XContextChangeEventListener,com::sun::star::ui::XUIElement,com::sun::star::ui::XToolPanel,com::sun::star::ui::XSidebarPanel,com::sun::star::ui::XUpdateModel>::dispose
        sfxlo.dll!sfx2::sidebar::Panel::dispose
        vcllo.dll!VclReferenceBase::disposeOnce
        sfxlo.dll!VclPtr<sfx2::sidebar::Panel>::disposeAndClear
        sfxlo.dll!sfx2::sidebar::Deck::ResetPanels
        sfxlo.dll!sfx2::sidebar::SidebarController::CreatePanels
        sfxlo.dll!sfx2::sidebar::SidebarController::CreateDeck
        sfxlo.dll!sfx2::sidebar::SidebarController::SwitchToDeck
        sfxlo.dll!sfx2::sidebar::SidebarController::SwitchToDeck
        sfxlo.dll!sfx2::sidebar::SidebarController::UpdateConfigurations
        sfxlo.dll!sfx2::sidebar::SidebarController::notifyContextChangeEvent
        fwklo.dll!`anonymous 
namespace'::ContextChangeEventMultiplexer::BroadcastEventToSingleContainer
        fwklo.dll!`anonymous 
namespace'::ContextChangeEventMultiplexer::broadcastContextChangeEvent
        sfxlo.dll!sfx2::sidebar::ContextChangeBroadcaster::BroadcastContextChange
        sfxlo.dll!sfx2::sidebar::ContextChangeBroadcaster::Activate
        sfxlo.dll!SfxShell::BroadcastContextForActivation
        swlo.dll!SwPagePreview::SwPagePreview
        swlo.dll!SwPagePreview::CreateInstance
        sfxlo.dll!SfxViewFactory::CreateInstance
        sfxlo.dll!SfxBaseModel::createViewController
        sfxlo.dll!`anonymous 
namespace'::SfxFrameLoader_Impl::impl_createDocumentView
        sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load
        fwklo.dll!framework::LoadEnv::impl_loadContent
        fwklo.dll!framework::LoadEnv::startLoading
        fwklo.dll!framework::LoadEnv::loadComponentFromURL
        fwklo.dll!`anonymous namespace'::Frame::loadComponentFromURL
        sfxlo.dll!SfxViewFrame::LoadViewIntoFrame_Impl
        sfxlo.dll!SfxViewFrame::SwitchToViewShell_Impl
        sfxlo.dll!SfxViewFrame::ExecView_Impl
        sfxlo.dll!SfxStubSfxViewFrameExecView_Impl
        sfxlo.dll!SfxShell::CallExec
        sfxlo.dll!SfxDispatcher::Call_Impl
        sfxlo.dll!SfxDispatcher::PostMsgHandler
        sfxlo.dll!std::_Invoker_pmf_pointer::_Call<void (__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher * 
&,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::invoke<void (__cdecl 
SfxDispatcher::*&)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher * 
&,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::_Invoker_ret<std::_Unforced,0>::_Call<void (__cdecl 
SfxDispatcher::*&)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher * 
&,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::_Call_binder<std::_Unforced,0,1,void (__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),std::tuple<SfxDispatcher *,std::_Ph<1> 
,std::tuple<std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
&&> >
        sfxlo.dll!std::_Binder<std::_Unforced,void (__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher *,std::_Ph<1> const 
&>::operator()<std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 

        sfxlo.dll!std::_Invoker_functor::_Call<std::_Binder<std::_Unforced,void 
(__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher *,std::_Ph<1> const &> 
&,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::invoke<std::_Binder<std::_Unforced,void (__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher *,std::_Ph<1> const &> 
&,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::_Invoker_ret<void,1>::_Call<std::_Binder<std::_Unforced,void (__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> >),SfxDispatcher 
*,std::_Ph<1> const &> &,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > >
        sfxlo.dll!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void 
(__cdecl 
SfxDispatcher::*)(std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
),SfxDispatcher *,std::_Ph<1> const 
&>,void,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> > 
::_Do_call
        sfxlo.dll!std::_Func_class<void,std::unique_ptr<SfxRequest,std::default_delete<SfxRequest> 
::operator()
        sfxlo.dll!SfxHintPoster::DoEvent_Impl
        sfxlo.dll!SfxHintPoster::LinkStubDoEvent_Impl
        vcllo.dll!Link<void *,void>::Call
        vcllo.dll!ImplHandleUserEvent
        vcllo.dll!ImplWindowFrameProc
        vcllo.dll!SalFrame::CallCallback
        vclplug_winlo.dll!ImplHandleUserEvent
        vclplug_winlo.dll!SalFrameWndProc
        vclplug_winlo.dll!SalFrameWndProcW
        user32.dll!UserCallWinProcCheckWow
        user32.dll!CallWindowProcW
        opengl32.dll!wglWndProc
        user32.dll!UserCallWinProcCheckWow
        user32.dll!DispatchMessageWorker
        vclplug_winlo.dll!ImplSalDispatchMessage
        vclplug_winlo.dll!ImplSalYield
        vclplug_winlo.dll!SalComWndProc
        vclplug_winlo.dll!SalComWndProcW
        user32.dll!UserCallWinProcCheckWow
        user32.dll!DispatchClientMessage
        user32.dll!__fnDWORD
        ntdll.dll!KiUserCallbackDispatcherContinue
        win32u.dll!NtUserPeekMessage
        user32.dll!_PeekMessage
        user32.dll!PeekMessageW
        vclplug_winlo.dll!ImplSalYield
        vclplug_winlo.dll!WinSalInstance::DoYield
        vcllo.dll!ImplYield
        vcllo.dll!Application::Yield
        vcllo.dll!Application::Execute
        sofficeapp.dll!desktop::Desktop::Main
        vcllo.dll!ImplSVMain
        vcllo.dll!SVMain
        sofficeapp.dll!soffice_main
        soffice.bin!sal_main
        soffice.bin!main
        soffice.bin!invoke_main
        soffice.bin!__scrt_common_main_seh
        soffice.bin!__scrt_common_main
        soffice.bin!mainCRTStartup
        kernel32.dll!BaseThreadInitThunk
        ntdll.dll!RtlUserThreadStart
====

So the question is why there's apparently an attempt to use window after 
it was disposed; and how to properly prevent it.

-- 
Best regards,
Mike Kaganski

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.