Failing JunitTest_framework_complex
Kaganski Mike
mikekaganski at hotmail.com
Wed Nov 21 13:01:25 UTC 2018
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
More information about the LibreOffice
mailing list