-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash when loading Google meeting #7962
Comments
I reproduced this on an up-to-date Arch Linux on Wayland. The crash happens after the target URL is put into the history, so it can create a crash-loop if the last page is set to restore on re-launch, unless a launch is done I tried this, and it does not crash:
Instead, it gets a point where it prompts to select a microphone permission and I can't proceed because the test browser doesn't seem to support that. |
Reproduces with: import sys
from PyQt6.QtCore import QUrl
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWebEngineWidgets import QWebEngineView
app = QApplication(sys.argv)
wv = QWebEngineView()
wv.page().featurePermissionRequested.connect(
lambda url, feature: wv.page().setFeaturePermission(
url, page, QWebEnginePage.PermissionPolicy.PermissionGrantedByUser
)
)
wv.load(QUrl("https://meet.google.com"))
wv.show()
app.exec() stacktrace: #0 base::Value::GetList() const () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/values.cc:321
#1 0x00007fffeb783a93 in GetServiceWorkerExtendedLifetimeOrigins () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc:164
#2 extensions::MessageService::OpenChannelImpl(content::BrowserContext*, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, extensions::Extension const*, bool) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc:719
#3 0x00007fffeb784e9e in extensions::MessageService::PendingLazyContextOpenChannel(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >) ()
at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/api/messaging/message_service.cc:1043
#4 0x00007fffeb780ece in base::internal::FunctorTraits<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), void>::Invoke<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> > >(void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), base::WeakPtr<extensions::MessageService>&&, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >&&, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >&&) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:764
#5 base::internal::InvokeHelper<true, void, 0ul, 1ul>::MakeItSo<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), std::tuple<base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> > >(void (extensions::MessageService::*&&)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), std::tuple<base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >&&, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >&&) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:966
#6 base::internal::Invoker<base::internal::BindState<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >, void (std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >)>::RunImpl<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), std::tuple<base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >, 0ul, 1ul>(void (extensions::MessageService::*&&)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), std::tuple<base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >&&, std::integer_sequence<unsigned long, 0ul, 1ul>, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >&&) ()
at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:1038
#7 base::internal::Invoker<base::internal::BindState<void (extensions::MessageService::*)(std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> >, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >), base::WeakPtr<extensions::MessageService>, std::unique_ptr<extensions::MessageService::OpenChannelParams, std::default_delete<extensions::MessageService::OpenChannelParams> > >, void (std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >)>::RunOnce(base::internal::BindStateBase*, std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >&&) ()
at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:989
#8 0x00007fffeb70bfb9 in base::OnceCallback<void (std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >)>::Run(std::unique_ptr<extensions::LazyContextTaskQueue::ContextInfo, std::default_delete<extensions::LazyContextTaskQueue::ContextInfo> >) && () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/callback.h:152
#9 extensions::LazyBackgroundTaskQueue::ProcessPendingTasks(extensions::ExtensionHost*, content::BrowserContext*, extensions::Extension const*) () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/lazy_background_task_queue.cc:136
#10 0x00007fffeb6ccd25 in extensions::ExtensionHostRegistry::ExtensionHostCompletedFirstLoad(extensions::ExtensionHost*) () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/extension_host_registry.cc:120
#11 0x00007fffeb6ccddc in extensions::ExtensionHost::DidStopLoading() () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/extensions/browser/extension_host.cc:271
#12 0x00007fffeaeedb53 in content::WebContentsImpl::WebContentsObserverList::NotifyObservers<void (content::WebContentsObserver::*)()>(void (content::WebContentsObserver::*)()) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.h:1549
#13 0x00007fffeaf19dad in content::WebContentsImpl::LoadingStateChanged(bool, content::LoadNotificationDetails*) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc:6872
#14 0x00007fffeaf1a617 in content::WebContentsImpl::LoadingStateChanged(bool, content::LoadNotificationDetails*) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc:6838
#15 content::WebContentsImpl::DidStopLoading() () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/web_contents/web_contents_impl.cc:7641
#16 0x00007fffeabdc593 in content::FrameTreeNode::DidStopLoading() () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/renderer_host/frame_tree_node.cc:664
#17 0x00007fffeacebd65 in content::RenderFrameHostImpl::DidStopLoading() () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/content/browser/renderer_host/render_frame_host_impl.cc:7526
#18 0x00007fffea48b09c in content::mojom::FrameHostStubDispatch::Accept(content::mojom::FrameHost*, mojo::Message*) () at gen/content/common/frame.mojom.cc:5529
#19 0x00007fffec5302a3 in mojo::InterfaceEndpointClient::HandleValidatedMessage(mojo::Message*) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:1000
#20 0x00007fffec531307 in mojo::MessageDispatcher::Accept(mojo::Message*) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/message_dispatcher.cc:48
#21 0x00007fffec52fcce in mojo::InterfaceEndpointClient::HandleIncomingMessage(mojo::Message*) () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/mojo/public/cpp/bindings/lib/interface_endpoint_client.cc:694
#22 0x00007fffec789402 in AcceptOnEndpointThread() () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/ipc/ipc_mojo_bootstrap.cc:1075
#23 0x00007fffec7860e9 in Invoke<void (IPC::(anonymous namespace)::ChannelAssociatedGroupController::*)(mojo::Message), scoped_refptr<IPC::(anonymous namespace)::ChannelAssociatedGroupController>, mojo::Message> () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:764
#24 MakeItSo<void (IPC::(anonymous namespace)::ChannelAssociatedGroupController::*)(mojo::Message), std::tuple<scoped_refptr<IPC::(anonymous namespace)::ChannelAssociatedGroupController>, mojo::Message> > () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:943
#25 RunImpl<void (IPC::(anonymous namespace)::ChannelAssociatedGroupController::*)(mojo::Message), std::tuple<scoped_refptr<IPC::(anonymous namespace)::ChannelAssociatedGroupController>, mojo::Message>, 0, 1> () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:1038
#26 RunOnce() () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/bind_internal.h:989
#27 0x00007fffebcf0d1e in base::OnceCallback<void ()>::Run() && () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/functional/callback.h:152
#28 base::TaskAnnotator::RunTaskImpl(base::PendingTask&) () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/task/common/task_annotator.cc:162
#29 0x00007fffebd09819 in RunTask<base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*)::<lambda(perfetto::EventContext&)> > () at ../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/task/common/task_annotator.h:88
#30 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::LazyNow*) () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:490
#31 0x00007fffebd0a266 in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork() () at ./../../../../../qtwebengine-everywhere-src-6.6.0/src/3rdparty/chromium/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:340
#32 0x00007fffe8150192 in QtWebEngineCore::MessagePumpForUIQt::handleScheduledWork() () at /usr/src/debug/qt6-webengine/qtwebengine-everywhere-src-6.6.0/src/core/browser_main_parts_qt.cpp:197
#33 0x00007ffff65a4fe6 in QObject::event(QEvent*) (this=0x555555b6d9e0, e=0x555555eff680) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.0/src/corelib/kernel/qobject.cpp:1414
[...] |
Reported upstream: [QTBUG-118157] [REG 6.5 -> 6.6] Crash in Nothing qutebrowser can do from what I can see. |
Ah, that's the same stack trace as here: #7961 (comment) |
Ah, good catch, I haven't looked at that one in detail yet. 6.6 was branched from |
I've found a reproducer for this issue that doesn't require a login and a workaround that doesn't require recompiling QtWebEngine (it is not a nice workaround though). Reproducer:
The workaround is editing the
Eg (in the cp /usr/share/qt6/resources/qtwebengine_resources.pak qtwebengine_resources.pak-6.6.0.orig
./pak -u qtwebengine_resources.pak-6.6.0.orig 6.6.0
cd 6.6.0
grep Hangouts * # I got `36197.json: "name": "Google Hangouts",
# edit that json file and remove the entries from the "matches" list
../pak -p pak_index.ini ../qtwebengine_resources.pak-6.6.0.repack
sudo cp ../qtwebengine_resources.pak-6.6.0.repack /usr/share/qt6/resources/qtwebengine_resources.pak It would be nice if we could point chrome to an existing resource pak/folder/file that would override any bundled ones so we didn't have the overwrite the original file, but I couldn't see a way. Edit: raised upstream suggestion to be able to disable these "blessed" extensions: https://bugreports.qt.io/browse/QTBUG-118452 |
@toofar Nice find! There is a |
@The-Compiler The implementation is a superhack, but from the user's perspective, it's a fix for a popular site. |
I'm aware. I'm just not sure if it's worth spending what might be multiple hours on working around this vs. waiting for a patch and asking Arch Linux to backport it. |
Well, let's say this is probably happening: https://github.com/qutebrowser/qutebrowser/blob/pakjoy/qutebrowser/misc/pakjoy.py Successfully prints the patched file for me, so I suppose all that's left is the logic for actually finding/loading the file, some debug logging, and some tests... |
Thanks all for the debugging efforts. For others on arch that would like to roll back (while the more permanent patches are in progress), I was able to downgrade with the following steps. This voids your warranty :) I did not attempt the
|
Hmm, I thought arch had backported the upstream fix into their webengine build? |
Oh interesting. To test I just restored the newer qt6 packages, ran |
This is resolved for me. I updated everything to the latest version and after reinstalling qutebrowser-git, no longer experience the crash when joining a google meet. |
Glad to hear! Quick overview for people who lost track:
So yeah, either today's Qt upgrade, or an upcoming qutebrowser release (maybe this week?) will both fix it. |
Version info
qutebrowser --temp-basedir --version
Does the bug happen if you start with
--temp-basedir
?:Yes
Description
Qutebrowser crashes when loading a Google meeting on X11. I do not reproduce with Teams meetings.
How to reproduce
Core dump
coredumpctl info 181228
Debug output
qutebrowser --temp-basedir --debug
The text was updated successfully, but these errors were encountered: