Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.7.2, 6.7.3, 6.9.1
-
None
-
-
Windows
Description
I have several WebEngineView components. When I switch between them quickly, I have a crash.
Call Stack:
> Qt6Qmld.dll!QJSEngine::newQObject(QObject * object) Line 739 C++ Qt6WebEngineQuickd.dll!QQuickWebEngineViewPrivate::navigationRequested(int navigationType, const QUrl & url, bool & accepted, bool isMainFrame) Line 452 C++ Qt6WebEngineCored.dll!QtWebEngineCore::navigationThrottleCallback(content::NavigationHandle * handle) Line 827 C++ Qt6WebEngineCored.dll!base::internal::FunctorTraits<bool (__cdecl*)(content::NavigationHandle *),void>::Invoke<bool (__cdecl*const &)(content::NavigationHandle *),content::NavigationHandle *>(bool(*)(content::NavigationHandle *) & function, content::NavigationHandle * && <args_0>) Line 632 C++ Qt6WebEngineCored.dll!base::internal::InvokeHelper<0,bool>::MakeItSo<bool (__cdecl*const &)(content::NavigationHandle *),std::tuple<> const &,content::NavigationHandle *>(bool(*)(content::NavigationHandle *) & functor, const std::tuple<> & bound, content::NavigationHandle * && <args_0>) Line 872 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<bool (__cdecl*)(content::NavigationHandle *)>,bool __cdecl(content::NavigationHandle *)>::RunImpl<bool (__cdecl*const &)(content::NavigationHandle *),std::tuple<> const &>(bool(*)(content::NavigationHandle *) & functor, const std::tuple<> & bound, std::integer_sequence<unsigned __int64> seq, content::NavigationHandle * && <unbound_args_0>) Line 971 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<bool (__cdecl*)(content::NavigationHandle *)>,bool __cdecl(content::NavigationHandle *)>::Run(base::internal::BindStateBase * base, content::NavigationHandle * <unbound_args_0>) Line 935 C++ Qt6WebEngineCored.dll!base::RepeatingCallback<bool __cdecl(content::NavigationHandle *)>::Run(content::NavigationHandle * <args_0>) Line 333 C++ Qt6WebEngineCored.dll!navigation_interception::InterceptNavigationThrottle::CheckIfShouldIgnoreNavigation() Line 74 C++ Qt6WebEngineCored.dll!navigation_interception::InterceptNavigationThrottle::WillStartRequest() Line 34 C++ Qt6WebEngineCored.dll!content::`anonymous namespace'::ExecuteNavigationEvent(content::NavigationThrottle * throttle, content::NavigationThrottleRunner::Event event) Line 41 C++ Qt6WebEngineCored.dll!content::NavigationThrottleRunner::ProcessInternal() Line 289 C++ Qt6WebEngineCored.dll!content::NavigationThrottleRunner::ProcessNavigationEvent(content::NavigationThrottleRunner::Event event) Line 128 C++ Qt6WebEngineCored.dll!content::NavigationRequest::WillStartRequest() Line 6863 C++ Qt6WebEngineCored.dll!content::NavigationRequest::BeginNavigationImpl() Line 2668 C++ Qt6WebEngineCored.dll!content::NavigationRequest::BeginNavigation() Line 2281 C++ Qt6WebEngineCored.dll!content::Navigator::BeforeUnloadCompleted(content::FrameTreeNode * frame_tree_node, bool proceed, const base::TimeTicks & proceed_time) Line 1037 C++ Qt6WebEngineCored.dll!content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame::__l2::<lambda>(base::WeakPtr<content::RenderFrameHostImpl> self, const base::TimeTicks & before_unload_end_time, bool proceed, bool unload_ack_is_for_navigation) Line 5516 C++ Qt6WebEngineCored.dll!base::internal::FunctorTraits<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),void>::Invoke<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool>(content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, base::WeakPtr<content::RenderFrameHostImpl> && <args_0>, base::TimeTicks && <args_1>, bool && <args_2>, bool && <args_3>) Line 617 C++ Qt6WebEngineCored.dll!base::internal::InvokeHelper<0,void,0,1,2,3>::MakeItSo<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool>>(content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool> && bound) Line 872 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool>,void __cdecl(void)>::RunImpl<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool>,0,1,2,3>(content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool> && bound, std::integer_sequence<unsigned __int64,0,1,2,3> seq) Line 971 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,base::TimeTicks,bool,bool>,void __cdecl(void)>::RunOnce(base::internal::BindStateBase * base) Line 923 C++ Qt6WebEngineCored.dll!base::OnceCallback<void __cdecl(void)>::Run() Line 152 C++ Qt6WebEngineCored.dll!content::RenderFrameHostImpl::ProcessBeforeUnloadCompletedFromFrame(bool proceed, bool treat_as_final_completion_callback, content::RenderFrameHostImpl * frame, bool is_frame_being_destroyed, const base::TimeTicks & renderer_before_unload_start_time, const base::TimeTicks & renderer_before_unload_end_time, bool for_legacy) Line 5540 C++ Qt6WebEngineCored.dll!content::RenderFrameHostImpl::ProcessBeforeUnloadCompleted(bool proceed, bool treat_as_final_completion_callback, const base::TimeTicks & renderer_before_unload_start_time, const base::TimeTicks & renderer_before_unload_end_time, bool for_legacy) Line 5391 C++ Qt6WebEngineCored.dll!content::RenderFrameHostImpl::SendBeforeUnload::__l2::<lambda>(base::WeakPtr<content::RenderFrameHostImpl> impl, bool for_legacy, bool proceed, base::TimeTicks renderer_before_unload_start_time, base::TimeTicks renderer_before_unload_end_time) Line 13901 C++ Qt6WebEngineCored.dll!base::internal::FunctorTraits<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),void>::Invoke<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,bool,bool,base::TimeTicks,base::TimeTicks>(content::RenderFrameHostImpl::SendBeforeUnload::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, base::WeakPtr<content::RenderFrameHostImpl> && <args_0>, bool && <args_1>, bool && <args_2>, base::TimeTicks && <args_3>, base::TimeTicks && <args_4>) Line 617 C++ Qt6WebEngineCored.dll!base::internal::InvokeHelper<0,void,0,1>::MakeItSo<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,bool>,bool,base::TimeTicks,base::TimeTicks>(content::RenderFrameHostImpl::SendBeforeUnload::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,bool> && bound, bool && <args_0>, base::TimeTicks && <args_1>, base::TimeTicks && <args_2>) Line 872 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,bool>,void __cdecl(bool,base::TimeTicks,base::TimeTicks)>::RunImpl<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,bool>,0,1>(content::RenderFrameHostImpl::SendBeforeUnload::__l2::void <lambda>(unsigned char *, unsigned char, int) && functor, std::tuple<base::WeakPtr<content::RenderFrameHostImpl>,bool> && bound, std::integer_sequence<unsigned __int64,0,1> seq, bool && <unbound_args_0>, base::TimeTicks && <unbound_args_1>, base::TimeTicks && <unbound_args_2>) Line 971 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::SendBeforeUnload'::`2'::void <lambda>(unsigned char *, unsigned char, int),base::WeakPtr<content::RenderFrameHostImpl>,bool>,void __cdecl(bool,base::TimeTicks,base::TimeTicks)>::RunOnce(base::internal::BindStateBase * base, bool <unbound_args_0>, base::TimeTicks && <unbound_args_1>, base::TimeTicks && <unbound_args_2>) Line 923 C++ Qt6WebEngineCored.dll!base::OnceCallback<void (bool,class base::TimeTicks,class base::TimeTicks)>::Run(bool,class base::TimeTicks,class base::TimeTicks) C++ Qt6WebEngineCored.dll!content::RenderFrameHostImpl::SendBeforeUnload::__l5::<lambda>(base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)> callback, base::TimeTicks start_time, base::TimeTicks end_time) Line 13922 C++ Qt6WebEngineCored.dll!base::internal::FunctorTraits<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),void>::Invoke<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks>(content::RenderFrameHostImpl::SendBeforeUnload::__l5::void <lambda>(unsigned char *, unsigned char, int, unsigned char) && functor, base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)> && <args_0>, base::TimeTicks && <args_1>, base::TimeTicks && <args_2>) Line 617 C++ Qt6WebEngineCored.dll!base::internal::InvokeHelper<0,void,0,1,2>::MakeItSo<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),std::tuple<base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks>>(content::RenderFrameHostImpl::SendBeforeUnload::__l5::void <lambda>(unsigned char *, unsigned char, int, unsigned char) && functor, std::tuple<base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks> && bound) Line 872 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks>,void __cdecl(void)>::RunImpl<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),std::tuple<base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks>,0,1,2>(content::RenderFrameHostImpl::SendBeforeUnload::__l5::void <lambda>(unsigned char *, unsigned char, int, unsigned char) && functor, std::tuple<base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks> && bound, std::integer_sequence<unsigned __int64,0,1,2> seq) Line 971 C++ Qt6WebEngineCored.dll!base::internal::Invoker<base::internal::BindState<`content::RenderFrameHostImpl::SendBeforeUnload'::`5'::void <lambda>(unsigned char *, unsigned char, int, unsigned char),base::OnceCallback<void __cdecl(bool,base::TimeTicks,base::TimeTicks)>,base::TimeTicks,base::TimeTicks>,void __cdecl(void)>::RunOnce(base::internal::BindStateBase * base) Line 923 C++ Qt6WebEngineCored.dll!base::OnceCallback<void __cdecl(void)>::Run() Line 152 C++ Qt6WebEngineCored.dll!base::TaskAnnotator::RunTaskImpl(base::PendingTask & pending_task) Line 222 C++ Qt6WebEngineCored.dll!base::TaskAnnotator::RunTask<`base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl'::`50'::void <lambda>(unsigned char *, unsigned char, int)>(perfetto::StaticString event_name, base::PendingTask & pending_task, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl::__l50::void <lambda>(unsigned char *, unsigned char, int) && <args_0>) Line 90 C++ Qt6WebEngineCored.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow * continuation_lazy_now) Line 489 C++ Qt6WebEngineCored.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() Line 354 C++ Qt6WebEngineCored.dll!QtWebEngineCore::MessagePumpForUIQt::handleScheduledWork() Line 154 C++ Qt6WebEngineCored.dll!QtWebEngineCore::MessagePumpForUIQt::{ctor}::__l1::<lambda_4_>::operator()() Line 106 C++ Qt6WebEngineCored.dll!std::invoke<`QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt'::`1'::<lambda_4_> &>(QtWebEngineCore::MessagePumpForUIQt::{ctor}::__l1::<lambda_4_> & _Obj) Line 1525 C++ Qt6WebEngineCored.dll!std::_Invoker_ret<void,1>::_Call<`QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt'::`1'::<lambda_4_> &>(QtWebEngineCore::MessagePumpForUIQt::{ctor}::__l1::<lambda_4_> & _Func) Line 652 C++ Qt6WebEngineCored.dll!std::_Func_impl_no_alloc<`QtWebEngineCore::MessagePumpForUIQt::MessagePumpForUIQt'::`1'::<lambda_4_>,void>::_Do_call() Line 823 C++ Qt6WebEngineCored.dll!std::_Func_class<void>::operator()() Line 870 C++ Qt6WebEngineCored.dll!QWebEngineMessagePumpScheduler::timerEvent(QTimerEvent * ev) Line 41 C++ Qt6Cored.dll!QObject::event(QEvent * e) Line 1428 C++ Qt6Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3287 C++ Qt6Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3238 C++ Qt6Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1142 C++ Qt6Cored.dll!QCoreApplication::sendEvent(QObject * receiver, QEvent * event) Line 1584 C++ Qt6Cored.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1940 C++ Qt6Cored.dll!QEventDispatcherWin32::sendPostedEvents() Line 900 C++ Qt6Guid.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 44 C++ Qt6Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 470 C++ Qt6Guid.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 36 C++ Qt6Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 101 C++ Qt6Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 182 C++ Qt6Cored.dll!QCoreApplication::exec() Line 1486 C++ Qt6Guid.dll!QGuiApplication::exec() Line 1927 C++ Qt6Widgetsd.dll!QApplication::exec() Line 2556 C++
I was able to reproduce it using this example:
import QtQuick import QtWebEngine import QtQuick.Controls ApplicationWindow { id: root visible: true width: 600 height: 400 ListView { id: list anchors.fill: parent model: [0, 1, 2, 3,] orientation: ListView.Horizontal delegate: Item { id: delegateItem width: ListView.view.width height: ListView.view.height WebEngineView { anchors.fill: parent url: "https://doc.qt.io" } } onCurrentIndexChanged: function() { list.positionViewAtIndex(list.currentIndex, ListView.Center); } } Timer { id: timer interval: 5000 running: true repeat: false onTriggered: { list.currentIndex++; if (list.currentIndex > 2) { list.currentIndex = 0; } timer.interval = 10; timer.start(); } } }