Closed Bug 1790991 Opened 2 years ago Closed 2 years ago

Firefox locks up in KDE plasma (wayland) when repeatedly right-clicking on extension popups

Categories

(Core :: Widget: Gtk, defect, P3)

Firefox 104
defect

Tracking

()

RESOLVED DUPLICATE of bug 1788247

People

(Reporter: openmail+bugzilla, Assigned: stransky)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:104.0) Gecko/20100101 Firefox/104.0

Steps to reproduce:

  1. Open Firefox
  2. Left click on an FF-extension icon that opens an extension-popup (for example the preinstalled Pocket extension)
  3. Right click a few times on the open popup (activating and deactivating the context menu)

Actual results:

After a few clicks Firefox stops responding and has to be force closed. Kwin_wayland starts to spike in CPU.

Expected results:

Firefox stays responsible.

This bug was also filed at KDE: https://bugs.kde.org/show_bug.cgi?id=457516

The Bugbug bot thinks this bug should belong to the 'Core::Widget: Gtk' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Widget: Gtk
Product: Firefox → Core

May be Bug 1777664 & co, fixed in FF 105.

See Also: → 1777664
Priority: -- → P3

So far the issue is reproducible in 105.0rc1 for me. Never experienced any menu-popup freeze.

Going to check again in 105 release.

I'm using version 105 and still have the same problem. I can't use my add-ons and it's really frustrating.

KDE Plasma 5.26 Beta / Wayland

I can also confirm that the issue persists on 105 with AMD and Intel GPU on different distros. E.g.:

Firefox 105.0 (64-bit)

Operating System: NixOS 22.11
KDE Plasma Version: 5.25.5
KDE Frameworks Version: 5.98.0
Qt Version: 5.15.5
Kernel Version: 5.15.68 (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i5-8250U CPU @ 1.60GHz
Memory: 15,4 GiB of RAM
Graphics Processor: Mesa Intel® UHD Graphics 620

It's because we're not getting free buffers from Wayland compositor. It's blocked at Resume:

Compositor:

(gdb) bt
#0  0x00007fe41d089a19 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1  0x00007fe41d08c210 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2  0x00007fe41d30ac52 in PR_Wait (mon=0x7fe3bf735be0, timeout=<optimized out>) at /raid/src/nsprpub/pr/src/pthreads/ptsynch.c:731
#3  0x00007fe41062a3a3 in mozilla::ReentrantMonitor::Wait(unsigned int) (this=0x7fe3e40fb6c0, aInterval=4294967295) at /raid/src/objdir-opt/dist/include/mozilla/ReentrantMonitor.h:90
#4  mozilla::layers::SynchronousTask::Wait() (this=0x7fe3e40fb6c0) at /raid/src/objdir-opt/dist/include/mozilla/layers/SynchronousTask.h:25
#5  mozilla::wr::WebRenderAPI::Resume() (this=0x7fe3be4e21a0) at /raid/src/gfx/webrender_bindings/WebRenderAPI.cpp:602
#6  0x00007fe4104e9e66 in mozilla::layers::WebRenderBridgeParent::Resume() (this=0x7fe3bf32f400) at /raid/src/gfx/layers/wr/WebRenderBridgeParent.cpp:2632
#7  0x00007fe4104909d9 in mozilla::layers::CompositorBridgeParent::ResumeComposition() (this=0x7fe3bd84a820) at /raid/src/gfx/layers/ipc/CompositorBridgeParent.cpp:569
#8  mozilla::layers::CompositorBridgeParent::RecvResume() (this=0x7fe3bd84a820) at /raid/src/gfx/layers/ipc/CompositorBridgeParent.cpp:454
#9  0x00007fe4103f250d in mozilla::layers::PCompositorBridgeParent::OnMessageReceived(IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&)
    (this=0x7fe3bd84a820, msg__=<optimized out>, reply__=[(IPC::Message *) 0x0]) at /raid/src/objdir-opt/ipc/ipdl/PCompositorBridgeParent.cpp:1558
#10 0x00007fe4103f6fa3 in mozilla::layers::PCompositorManagerParent::OnMessageReceived(IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&)
    (this=<optimized out>, msg__=..., reply__=[(IPC::Message *) 0x0]) at /raid/src/objdir-opt/ipc/ipdl/PCompositorManagerParent.cpp:517
#11 0x00007fe410074bd7 in mozilla::ipc::MessageChannel::DispatchSyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >&) (this=this@entry=0x7fe4015041f8, aProxy=aProxy@entry=0x7fe3e1ac92c0, aMsg=..., aReply=<error reading variable: Cannot access memory at address 0x0>)
    at /raid/src/ipc/glue/MessageChannel.cpp:1723
#12 0x00007fe410073f8a in mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >)
    (this=this@entry=0x7fe4015041f8, aProxy=aProxy@entry=0x7fe3e1ac92c0, aMsg=[(IPC::Message *) 0x7fe3b79d3480]) at /raid/src/ipc/glue/MessageChannel.cpp:1679
#13 0x00007fe41007430f in mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&)
    (this=0x7fe4015041f8, aProxy=aProxy@entry=0x7fe3e1ac92c0, aTask=...) at /raid/src/ipc/glue/MessageChannel.cpp:1481
#14 0x00007fe410074860 in mozilla::ipc::MessageChannel::MessageTask::Run() (this=0x7fe3b79d4180) at /raid/src/ipc/glue/MessageChannel.cpp:1579
#15 0x00007fe40f9e7357 in nsThread::ProcessNextEvent(bool, bool*) (this=0x7fe41ce76640, aMayWait=<optimized out>, aResult=0x7fe3e40fbb1f) at /raid/src/xpcom/threads/nsThread.cpp:1199
#16 0x00007fe40f9eae5b in NS_ProcessNextEvent(nsIThread*, bool) (aThread=0x7fe3bf735c70, aThread@entry=0x7fe41ce76640, aMayWait=true) at /raid/src/xpcom/threads/nsThreadUtils.cpp:465
#17 0x00007fe410077b9a in mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) (this=0x7fe3e4780400, aDelegate=0x7fe3e40fbbd0)
    at /raid/src/ipc/glue/MessagePump.cpp:330
#18 0x00007fe41002b606 in MessageLoop::RunInternal() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:381
#19 MessageLoop::RunHandler() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:374
#20 MessageLoop::Run() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:356
#21 0x00007fe40f9e493e in nsThread::ThreadFunc(void*) (aArg=0x7fe3fe8c0a20) at /raid/src/xpcom/threads/nsThread.cpp:384
#22 0x00007fe41d310df9 in _pt_root (arg=0x7fe3e4713ca0) at /raid/src/nsprpub/pr/src/pthreads/ptthread.c:201
#23 0x00007fe41d08ce2d in start_thread () at /lib64/libc.so.6
#24 0x00007fe41d1121b0 in clone3 () at /lib64/libc.so.6

Renderer:

(gdb) bt
#0  0x00007fe41d10588f in poll () at /lib64/libc.so.6
#1  0x00007fe41b015054 in wl_display_dispatch_queue () at /lib64/libwayland-client.so.0
#2  0x00007fe41b01605f in wl_display_roundtrip_queue () at /lib64/libwayland-client.so.0
#3  0x00007fe3e405c5f7 in get_back_bo (dri2_surf=0x7fe3bf333c00) at ../src/egl/drivers/dri2/platform_wayland.c:1053
#4  update_buffers (dri2_surf=dri2_surf@entry=0x7fe3bf333c00) at ../src/egl/drivers/dri2/platform_wayland.c:1141
#5  0x00007fe3e405cab4 in update_buffers_if_needed (dri2_surf=0x7fe3bf333c00) at ../src/egl/drivers/dri2/platform_wayland.c:1175
#6  dri2_wl_query_buffer_age (disp=<optimized out>, surface=0x7fe3bf333c00) at ../src/egl/drivers/dri2/platform_wayland.c:1600
#7  0x00007fe3e405078c in _eglQuerySurface (disp=<optimized out>, surface=0x7fe3bf333c00, attribute=<optimized out>, value=0x7fe3e489a6a4) at ../src/egl/main/eglsurface.c:562
#8  0x00007fe3e404627c in eglQuerySurface (dpy=0x7fe3e4763b00, surface=<optimized out>, attribute=12605, value=0x7fe3e489a6a4) at ../src/egl/main/eglapi.c:1230
#9  0x00007fe41038a0d2 in mozilla::gl::GLLibraryEGL::fQuerySurface(void*, void*, int, int*) const
    (this=0x1, dpy=0x7fe3e489a520, attribute=12605, value=0x7fe3e489a6a4, surface=<optimized out>) at /raid/src/gfx/gl/GLLibraryEGL.h:406
#10 mozilla::gl::EglDisplay::fQuerySurface(void*, int, int*) const (this=<optimized out>, attribute=12605, value=0x7fe3e489a6a4, surface=<optimized out>)
    at /raid/src/gfx/gl/GLLibraryEGL.h:824
#11 mozilla::gl::GLContextEGL::GetBufferAge() const (this=<optimized out>) at /raid/src/gfx/gl/GLContextProviderEGL.cpp:596
#12 0x00007fe4106159d4 in mozilla::wr::RenderCompositorEGL::GetBufferAge() const (this=0x7fe3bf495800) at /raid/src/gfx/webrender_bindings/RenderCompositorEGL.cpp:276
#13 0x00007fe41062112b in mozilla::wr::RendererOGL::UpdateAndRender(mozilla::Maybe<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::wr::ImageFormat> const&, mozilla::Maybe<mozilla::Range<unsigned char> > const&, bool*, mozilla::wr::RendererStats*)
    (this=0x7fe3be78ebb0, aReadbackSize=..., aReadbackFormat=..., aReadbackBuffer=..., aNeedsYFlip=0x0, aOutStats=aOutStats@entry=0x7fe3e489a7a0)
    at /raid/src/gfx/webrender_bindings/RendererOGL.cpp:172
#14 0x00007fe4106207cb in mozilla::wr::RenderThread::UpdateAndRender(mozilla::wr::WrWindowId, mozilla::layers::BaseTransactionId<mozilla::VsyncIdType> const&, mozilla::TimeStamp const&, bool, mozilla::Maybe<mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::wr::ImageFormat> const&, mozilla::Maybe<mozilla::Range<unsigned char> > const&, bool*) (this=this@entry=0x7fe41ce90e40, aWindowId=aWindowId@entry=..., aStartId=..., aStartTime=..., aRender=true, aReadbackSize=..., aReadbackFormat=..., aReadbackBuffer=..., aNeedsYFlip=0x0)
    at /raid/src/gfx/webrender_bindings/RenderThread.cpp:565
#15 0x00007fe41062021b in mozilla::wr::RenderThread::HandleFrameOneDoc(mozilla::wr::WrWindowId, bool) (this=0x7fe41ce90e40, aWindowId=..., aRender=<optimized out>)
    at /raid/src/gfx/webrender_bindings/RenderThread.cpp:411
#16 0x00007fe41062784f in mozilla::detail::RunnableMethodArguments<mozilla::wr::WrWindowId, bool>::applyImpl<mozilla::wr::RenderThread, void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, bool), StoreCopyPassByConstLRef<mozilla::wr::WrWindowId>, StoreCopyPassByConstLRef<bool>, 0ul, 1ul>(mozilla::wr::RenderThread*, void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, bool), mozilla::Tuple<StoreCopyPassByConstLRef<mozilla::wr::WrWindowId>, StoreCopyPassByConstLRef<bool> >&, std::integer_sequence<unsigned long, 0ul, 1ul>)
    (o=<optimized out>, m=<optimized out>, args=...) at /raid/src/objdir-opt/dist/include/nsThreadUtils.h:1147
#17 mozilla::detail::RunnableMethodArguments<mozilla::wr::WrWindowId, bool>::apply<mozilla::wr::RenderThread, void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, bool)>(mozilla::wr::RenderThread*, void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, bool)) (this=0x39, o=<optimized out>, m=<optimized out>)
    at /raid/src/objdir-opt/dist/include/nsThreadUtils.h:1153
#18 mozilla::detail::RunnableMethodImpl<mozilla::wr::RenderThread*, void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, bool), true, (mozilla::RunnableKind)0, mozilla::wr::WrWindowId, bool>::Run() (this=0x1) at /raid/src/objdir-opt/dist/include/nsThreadUtils.h:1200
#19 0x00007fe40f9e7357 in nsThread::ProcessNextEvent(bool, bool*) (this=0x7fe41ce764a0, aMayWait=<optimized out>, aResult=0x7fe3e489ab1f) at /raid/src/xpcom/threads/nsThread.cpp:1199
#20 0x00007fe40f9eae5b in NS_ProcessNextEvent(nsIThread*, bool) (aThread=0x7fe3e489a520, aThread@entry=0x7fe41ce764a0, aMayWait=true) at /raid/src/xpcom/threads/nsThreadUtils.cpp:465
#21 0x00007fe410077b9a in mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) (this=0x7fe3e47141c0, aDelegate=0x7fe3e489abd0)
    at /raid/src/ipc/glue/MessagePump.cpp:330
#22 0x00007fe41002b606 in MessageLoop::RunInternal() (this=0x1) at /raid/src/ipc/chromium/src/base/message_loop.cc:381
#23 MessageLoop::RunHandler() (this=0x1) at /raid/src/ipc/chromium/src/base/message_loop.cc:374
#24 MessageLoop::Run() (this=0x1) at /raid/src/ipc/chromium/src/base/message_loop.cc:356
#25 0x00007fe40f9e493e in nsThread::ThreadFunc(void*) (aArg=0x7fe3fe8c06c0) at /raid/src/xpcom/threads/nsThread.cpp:384
#26 0x00007fe41d310df9 in _pt_root (arg=0x7fe3e4713940) at /raid/src/nsprpub/pr/src/pthreads/ptthread.c:201
#27 0x00007fe41d08ce2d in start_thread () at /lib64/libc.so.6
#28 0x00007fe41d1121b0 in clone3 () at /lib64/libc.so.6

Main thread:

(gdb) bt
#0  0x00007fe41d089a19 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1  0x00007fe41d08c210 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2  0x00005643c4328b6c in mozilla::detail::ConditionVariableImpl::wait(mozilla::detail::MutexImpl&) (this=0x7fe3e1aeb2a0, lock=<optimized out>)
    at /raid/src/mozglue/misc/ConditionVariable_posix.cpp:106
#3  mozilla::detail::ConditionVariableImpl::wait_for(mozilla::detail::MutexImpl&, mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator> const&)
    (this=0x7fe3e1aeb2a0, lock=<optimized out>, a_rel_time=...) at /raid/src/mozglue/misc/ConditionVariable_posix.cpp:113
#4  0x00007fe410073cc6 in mozilla::OffTheBooksCondVar::Wait(mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator>) (this=<optimized out>, aDuration=...)
    at /raid/src/objdir-opt/dist/include/mozilla/CondVar.h:65
#5  mozilla::Monitor::Wait(mozilla::BaseTimeDuration<mozilla::TimeDurationValueCalculator>) (this=<optimized out>, aDuration=...) at /raid/src/objdir-opt/dist/include/mozilla/Monitor.h:39
#6  mozilla::ipc::MessageChannel::WaitForSyncNotify(bool) (this=this@entry=0x7fe41ceb3178) at /raid/src/ipc/glue/MessageChannel.cpp:1804
#7  0x00007fe41007309f in mozilla::ipc::MessageChannel::Send(mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >*)Python Exception <class 'gdb.error'>: value has been optimized out
 (this=0x7fe41ceb3178, aMsg=, aReply=0x7fff9da2e230) at /raid/src/ipc/glue/MessageChannel.cpp:1299
#8  0x00007fe41008325b in mozilla::ipc::IProtocol::ChannelSend(mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >*)Python Exception <class 'gdb.error'>: value has been optimized out
 (this=<optimized out>, aMsg=, aReply=0x0) at /raid/src/ipc/glue/ProtocolUtils.cpp:493
#9  0x00007fe4103e981b in mozilla::layers::PCompositorBridgeChild::SendResume() (this=0x7fe3bdd0f1c0) at /raid/src/objdir-opt/ipc/ipdl/PCompositorBridgeChild.cpp:677
#10 0x00007fe4124b541c in nsWindow::ResumeCompositorImpl() (this=this@entry=0x7fe3bdd89800) at /raid/src/widget/gtk/nsWindow.cpp:6431
#11 0x00007fe4124b113d in nsWindow::ConfigureCompositor()::$_7::operator()() const (this=<optimized out>) at /raid/src/widget/gtk/nsWindow.cpp:5585
#12 0x00007fe4124e0a11 in std::function<void ()>::operator()() const (this=0x7fe3be4357c0)
    at /home/komat/.mozbuild/sysroot-x86_64-linux-gnu/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/std_function.h:706
#13 moz_container_wayland_frame_callback_handler(void*, wl_callback*, unsigned int) (data=<optimized out>, callback=<optimized out>, time=<optimized out>)
    at /raid/src/widget/gtk/MozContainerWayland.cpp:304
#14 0x00007fe41af05746 in ffi_call_unix64 () at /lib64/libffi.so.8
#15 0x00007fe41af024d2 in ffi_call_int.lto_priv () at /lib64/libffi.so.8
#16 0x00007fe41b012e03 in wl_closure_invoke.constprop () at /lib64/libwayland-client.so.0
#17 0x00007fe41b013573 in dispatch_event.isra () at /lib64/libwayland-client.so.0
#18 0x00007fe41b01373c in wl_display_dispatch_queue_pending () at /lib64/libwayland-client.so.0
#19 0x00007fe41c31e2ab in _gdk_wayland_display_queue_events (display=<optimized out>) at ../gdk/wayland/gdkeventsource.c:201
#20 0x00007fe41c2e43a1 in gdk_display_get_event (display=0x7fe41cea1c00) at ../gdk/gdkdisplay.c:442
#21 0x00007fe41c322046 in gdk_event_source_dispatch (base=<optimized out>, callback=<optimized out>, data=<optimized out>) at ../gdk/wayland/gdkeventsource.c:120
#22 0x00007fe41b918faf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#23 0x00007fe41b96e2c8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
#24 0x00007fe41b916940 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#25 0x00007fe4124f0ec0 in nsAppShell::ProcessNextNativeEvent(bool) (this=<optimized out>, mayWait=true) at /raid/src/widget/gtk/nsAppShell.cpp:423
#26 0x00007fe41246cfa8 in nsBaseAppShell::DoProcessNextNativeEvent(bool) (this=0x7fe401557d80, mayWait=<optimized out>) at /raid/src/widget/nsBaseAppShell.cpp:133
#27 nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool) (this=0x7fe401557d80, thr=0x7fe41ce752c0, mayWait=<optimized out>) at /raid/src/widget/nsBaseAppShell.cpp:272
#28 0x00007fe41246d08d in non-virtual thunk to nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal*, bool) () at /raid/src/objdir-opt/dist/include/nsISupportsImpl.h:362
#29 0x00007fe40f9e6e9f in nsThread::ProcessNextEvent(bool, bool*) (this=0x7fe41ce752c0, aMayWait=true, aResult=0x7fff9da2eb3f) at /raid/src/xpcom/threads/nsThread.cpp:1121
#30 0x00007fe40f9eae5b in NS_ProcessNextEvent(nsIThread*, bool) (aThread=0x7fe3e1aeb2cc, aThread@entry=0x7fe41ce752c0, aMayWait=true) at /raid/src/xpcom/threads/nsThreadUtils.cpp:465
#31 0x00007fe410077413 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (this=0x7fe401571940, aDelegate=0x7fe41ce90200) at /raid/src/ipc/glue/MessagePump.cpp:107
#32 0x00007fe41002b606 in MessageLoop::RunInternal() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:381
#33 MessageLoop::RunHandler() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:374
#34 MessageLoop::Run() (this=0x189) at /raid/src/ipc/chromium/src/base/message_loop.cc:356
Assignee: nobody → stransky
Status: UNCONFIRMED → RESOLVED
Closed: 2 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: