Summary: | Yakuake randomly crashes in QWindowPrivate::emitScreenChangedRecursion() when opening app menu | ||
---|---|---|---|
Product: | [Applications] yakuake | Reporter: | Timothy B <yule2000> |
Component: | general | Assignee: | Eike Hein <hein> |
Status: | RESOLVED DUPLICATE | ||
Severity: | crash | CC: | kde, kde, nate |
Priority: | NOR | Keywords: | qt6, wayland |
Version: | 24.02.2 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Timothy B
2024-04-23 13:55:36 UTC
Yakuake crashed again with the above steps to reproduce. This time the backtrace looks a bit different, with the top of the backtrace stack still pointing to QScreen: #5 0x00007cfd3a7bee48 in QScreen::geometry (this=0x59862d3e2e10) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/gui/kernel/qscreen.cpp:330 #6 0x00007cfd3b2b2c00 in QWidgetPrivate::screenGeometry (hasPosition=<optimized out>, globalPosition=<optimized out>, widget=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qwidget_p.h:489 #7 QWidgetPrivate::screenGeometry (widget=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qwidget_p.h:470 #8 QMenuPrivate::popupGeometry (this=<optimized out>, screen=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qmenu.cpp:297 #9 0x00007cfd3b2b7c68 in QMenuPrivate::updateActionRects (this=0x59862d48c650) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qmenu.cpp:328 #10 QMenu::sizeHint (this=0x59862d830090) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qmenu.cpp:2265 #11 0x00007cfd3b2ce5ca in QPushButtonPrivate::adjustedMenuPosition (this=0x59862d834e00) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qpushbutton.cpp:604 #12 0x00007cfd3b2cea00 in QPushButtonPrivate::popupPressed (this=0x59862d834e00) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qpushbutton.cpp:577 #13 0x00007cfd3a197609 in QtPrivate::QSlotObjectBase::call (a=0x7ffdf4b9f938, r=0x59862d7e9080, this=0x59862d7e8f40, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qobjectdefs_impl.h:469 #14 doActivate<false> (sender=0x59862d7e9080, signal_index=7, argv=0x7ffdf4b9f938) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qobject.cpp:4078 #15 0x00007cfd3b1ff332 in QAbstractButton::pressed (this=0x59862d7e9080) at /usr/src/debug/qt6-base/build/src/widgets/Widgets_autogen/include/moc_qabstractbutton.cpp:311 #16 QAbstractButtonPrivate::emitPressed (this=0x59862d834e00) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qabstractbutton.cpp:395 #17 0x00007cfd3b20b8ab in QAbstractButton::mousePressEvent (this=0x59862d7e9080, e=0x7ffdf4b9ff30) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/widgets/qabstractbutton.cpp:948 #18 0x00007cfd3b147292 in QWidget::event (this=0x59862d7e9080, event=0x7ffdf4b9ff30) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qwidget.cpp:9018 #19 0x00007cfd3b0fbfcb in QApplicationPrivate::notify_helper (this=this@entry=0x59862d3a6be0, receiver=receiver@entry=0x59862d7e9080, e=e@entry=0x7ffdf4b9ff30) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qapplication.cpp:3287 #20 0x00007cfd3b100ac5 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffdf4b9ff30) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qapplication.cpp:2765 #21 0x00007cfd3a13dae8 in QCoreApplication::notifyInternal2 (receiver=0x59862d7e9080, event=0x7ffdf4b9ff30) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qcoreapplication.cpp:1134 #22 0x00007cfd3a13db3d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qcoreapplication.cpp:1589 #23 0x00007cfd3b0f4597 in QApplicationPrivate::sendMouseEvent (receiver=0x59862d7e9080, event=0x7ffdf4b9ff30, alienWidget=0x59862d7e9080, nativeWidget=0x7ffdf4ba0970, buttonDown=<optimized out>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qapplication.cpp:2347 #24 0x00007cfd3b15be37 in QWidgetWindow::handleMouseEvent (this=0x59862d8c9cb0, event=event@entry=0x7ffdf4ba02a0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qwidgetwindow.cpp:649 #25 0x00007cfd3b15d1c0 in QWidgetWindow::event (this=0x59862d8c9cb0, event=0x7ffdf4ba02a0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qwidgetwindow.cpp:263 #26 0x00007cfd3b0fbfcb in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x59862d8c9cb0, e=0x7ffdf4ba02a0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qapplication.cpp:3287 #27 0x00007cfd3a13dae8 in QCoreApplication::notifyInternal2 (receiver=0x59862d8c9cb0, event=0x7ffdf4ba02a0) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qcoreapplication.cpp:1134 #28 0x00007cfd3a13db3d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qcoreapplication.cpp:1589 #29 0x00007cfd3a7720e5 in QGuiApplicationPrivate::processMouseEvent (e=0x7cfd20003640) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/gui/kernel/qguiapplication.cpp:2327 #30 0x00007cfd3a7dcfdc in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/gui/kernel/qwindowsysteminterface.cpp:1114 #31 0x00007cfd3abc1244 in userEventSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/gui/platform/unix/qeventdispatcher_glib.cpp:38 #32 0x00007cfd38c98199 in g_main_dispatch (context=0x7cfd2c000f00) at ../glib/glib/gmain.c:3344 #33 0x00007cfd38cf73bf in g_main_context_dispatch_unlocked (context=0x7cfd2c000f00) at ../glib/glib/gmain.c:4152 #34 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7cfd2c000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217 #35 0x00007cfd38c97712 in g_main_context_iteration (context=0x7cfd2c000f00, may_block=1) at ../glib/glib/gmain.c:4282 #36 0x00007cfd3a383df4 in QEventDispatcherGlib::processEvents (this=0x59862d3e1080, flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qeventdispatcher_glib.cpp:394 #37 0x00007cfd3a145c7e in QEventLoop::processEvents (flags=..., this=0x7ffdf4ba0760) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qeventloop.cpp:100 #38 QEventLoop::exec (this=0x7ffdf4ba0760, flags=...) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/kernel/qeventloop.cpp:182 #39 0x00007cfd3a1416e8 in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/corelib/global/qflags.h:74 #40 0x00007cfd3b0f851a in QApplication::exec () at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.7.0/src/widgets/kernel/qapplication.cpp:2555 #41 0x000059862c445bfb in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/yakuake/yakuake-24.02.2/app/main.cpp:71 Yakuake crashed at me again doing the same steps to reproduce above, this time with Yakuake 24.05.0 and Frameworks 6.2: #5 std::__atomic_base<int>::fetch_add (this=0x8a04000000000076, __i=1, __m=std::memory_order_acq_rel, this=<optimized out>, __i=<optimized out>, __m=<optimized out>) at /usr/include/c++/14.1.1/bits/atomic_base.h:629 #6 QAtomicOps<int>::ref<int> (_q_value=<error reading variable: Cannot access memory at address 0x8a04000000000076>, _q_value=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qatomic_cxx11.h:259 #7 QBasicAtomicInteger<int>::ref (this=0x8a04000000000076, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/thread/qbasicatomic.h:47 #8 QtSharedPointer::ExternalRefCountData::getAndRef (obj=obj@entry=0x63b79f792730) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qsharedpointer.cpp:1456 #9 0x00007f36b7f7f511 in QWeakPointer<QObject>::QWeakPointer<QObject, true> (this=<optimized out>, ptr=0x63b79f792730) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qsharedpointer_impl.h:733 #10 QWeakPointer<QObject>::assign<QObject> (this=0x63b7a0e37630, ptr=0x63b79f792730) at /usr/src/debug/qt6-base/qtbase/src/corelib/tools/qsharedpointer_impl.h:728 #11 0x00007f36b7fd229f in QPointer<QScreen>::operator= (this=0x63b7a0e37630, p=0x63b79f792730, this=<optimized out>, p=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qpointer.h:71 #12 QWindowPrivate::connectToScreen (this=<optimized out>, screen=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:490 #13 QWindowPrivate::setTopLevelScreen (this=0x63b7a0e374e0, newScreen=0x63b79f792730, recreate=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:515 #14 0x00007f36b8936a87 in QWidgetPrivate::create (this=this@entry=0x63b79fbd1c00) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:1318 #15 0x00007f36b8935816 in QWidget::create (this=0x63b79faf5540, window=<optimized out>, initializeWindow=<optimized out>, destroyOldWindow=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:1209 #16 0x00007f36b8ad4208 in QMenuPrivate::popup(QPoint const&, QAction*, std::function<QPoint (QSize const&)>) (this=0x63b79fbd1c00, p=..., atAction=0x0, positionFunction=...) at /usr/src/debug/qt6-base/qtbase/src/widgets/widgets/qmenu.cpp:2369 #17 0x00007f36b8ae713d in QMenu::popup (this=<optimized out>, p=..., atAction=0x0) at /usr/src/debug/qt6-base/qtbase/src/widgets/widgets/qmenu.cpp:2313 #18 QPushButtonPrivate::popupPressed (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/widgets/widgets/qpushbutton.cpp:586 #19 0x00007f36b79a17e7 in QtPrivate::QSlotObjectBase::call (this=0x63b79fbb8060, r=0x63b79fbb81a0, a=0x7ffe0237a078, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:469 #20 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4086 #21 0x00007f36b8a0e4d2 in QAbstractButton::pressed (this=0x63b79fbb81a0) at /usr/src/debug/qt6-base/build/src/widgets/Widgets_autogen/include/moc_qabstractbutton.cpp:311 #22 QAbstractButtonPrivate::emitPressed (this=0x63b79fbadf00) at /usr/src/debug/qt6-base/qtbase/src/widgets/widgets/qabstractbutton.cpp:395 #23 0x00007f36b8a1b138 in QAbstractButton::mousePressEvent (this=0x63b79fbb81a0, e=0x7ffe0237a6e0) at /usr/src/debug/qt6-base/qtbase/src/widgets/widgets/qabstractbutton.cpp:948 #24 0x00007f36b894bcc6 in QWidget::event (this=0x63b79fbb81a0, event=0x7ffe0237a6e0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:9018 #25 0x00007f36b88fc55c in QApplicationPrivate::notify_helper (this=this@entry=0x63b79f778be0, receiver=receiver@entry=0x63b79fbb81a0, e=e@entry=0x7ffe0237a6e0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #26 0x00007f36b8901a01 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=0x7ffe0237a6e0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2765 #27 0x00007f36b7944e38 in QCoreApplication::notifyInternal2 (receiver=0x63b79fbb81a0, event=0x7ffe0237a6e0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #28 0x00007f36b7944e8d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1597 #29 0x00007f36b88f3e6d in QApplicationPrivate::sendMouseEvent (receiver=0x63b79fbb81a0, event=0x7ffe0237a6e0, alienWidget=<optimized out>, nativeWidget=0x7ffe0237b1b0, buttonDown=<optimized out>, lastMouseReceiver=..., spontaneous=true, onlyDispatchEnterLeave=false) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2347 #30 0x00007f36b8962072 in QWidgetWindow::handleMouseEvent (this=0x63b79feaf7f0, event=event@entry=0x7ffe0237ab30) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidgetwindow.cpp:649 #31 0x00007f36b89636b0 in QWidgetWindow::event (this=0x63b79feaf7f0, event=0x7ffe0237ab30) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidgetwindow.cpp:263 #32 0x00007f36b88fc55c in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x63b79feaf7f0, e=0x7ffe0237ab30) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #33 0x00007f36b7944e38 in QCoreApplication::notifyInternal2 (receiver=0x63b79feaf7f0, event=0x7ffe0237ab30) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #34 0x00007f36b7944e8d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1597 #35 0x00007f36b7f76cf0 in QGuiApplicationPrivate::processMouseEvent (e=0x63b79fe389c0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qguiapplication.cpp:2327 #36 0x00007f36b7fe5b44 in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindowsysteminterface.cpp:1114 #37 0x00007f36b83f9594 in userEventSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/platform/unix/qeventdispatcher_glib.cpp:38 #38 0x00007f36b6464a89 in g_main_dispatch (context=0x7f36ac000f00) at ../glib/glib/gmain.c:3344 #39 0x00007f36b64c69b7 in g_main_context_dispatch_unlocked (context=0x7f36ac000f00) at ../glib/glib/gmain.c:4152 #40 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f36ac000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217 #41 0x00007f36b6463f95 in g_main_context_iteration (context=0x7f36ac000f00, may_block=1) at ../glib/glib/gmain.c:4282 #42 0x00007f36b7ba28dd in QEventDispatcherGlib::processEvents (this=0x63b79f7909b0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394 #43 0x00007f36b794f10e in QEventLoop::processEvents (this=0x7ffe0237af90, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100 #44 QEventLoop::exec (this=0x7ffe0237af90, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182 #45 0x00007f36b794945d in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74 #46 0x00007f36b88f83fa in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2555 #47 0x000063b78852bbf9 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/yakuake/yakuake-24.05.0/app/main.cpp:67 It seems that the crash only occurs when I click on the Open Menu button or right click its system tray icon; I could not make Yakuake crash when I clicked on the Quit or Always on Top buttons. I've updated the title to reflect this observation. The first back trace (crash involving "QScreen::devicePixelRatio") resembles a back trace found in: https://bugs.kde.org/show_bug.cgi?id=483702#c10 I'm going to add that bug to the "See Also" section since they seem to be related. We might be looking at an upstream Qt bug with handling DPI changes while changing the active screen. *** This bug has been marked as a duplicate of bug 490791 *** |