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 _______________________________________________ LibreOffice mailing list LibreOffice@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/libreoffice