Summary: | Plasmoidviewer crashes when clicking on the applet | ||
---|---|---|---|
Product: | [Plasma] Plasma SDK | Reporter: | Jin Liu <ad.liu.jin> |
Component: | plasmoidviewer | Assignee: | Plasma Bugs List <plasma-bugs-null> |
Status: | VERIFIED DUPLICATE | ||
Severity: | crash | CC: | auirio, dashan108, giorgos.tsiapaliokas, kdedev, nate, snow |
Priority: | NOR | ||
Version First Reported In: | 6.3.4 | ||
Target Milestone: | --- | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
Patch to test for KWindowEffects::Effect::Slide
wayland-pos-fix.diff |
Description
Jin Liu
2025-05-02 06:46:42 UTC
I can reproduce this on git-master. Try (workaround to make it work): QT_QPA_PLATFORM=xcb plasmoidviewer --applet org.kde.plasma.digitalclock I believe its the same bug I reported https://bugs.kde.org/show_bug.cgi?id=506106 *** This bug has been marked as a duplicate of bug 506106 *** I don't believe this is a duplicate of bug 506106, unless where it fails is just inconsistent. This is the stack trace I get when testing on Plasma 6.4.4, in a full Plasma session: #0 malloc () at /usr/lib64/libc.so.6 #1 QArrayData::allocate(QArrayData**, long long, long long, long long, QArrayData::AllocationOption) () at /usr/lib64/libQt6Core.so.6 #2 ??? () at /usr/lib64/libQt6WaylandClient.so.6 #3 QtWaylandClient::QWaylandScreen::virtualSiblings() const () at /usr/lib64/libQt6WaylandClient.so.6 #4 QScreen::virtualSiblings() const () at /usr/lib64/libQt6Gui.so.6 #5 QGuiApplication::screenAt(QPoint const&) () at /usr/lib64/libQt6Gui.so.6 #6 PlasmaQuick::PopupPlasmaWindowPrivate::updateSlideEffect (this=, globalPosition=...) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:91 #7 PlasmaQuick::PopupPlasmaWindowPrivate::updatePosition (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:173 #8 PlasmaQuick::PopupPlasmaWindow::event (this=, event=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:420 #9 QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6 #10 QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6 #11 QGuiApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent*) () at /usr/lib64/libQt6Gui.so.6 #12 ??? () at /usr/lib64/libQt6Gui.so.6 #13 QtWaylandClient::QWaylandWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6WaylandClient.so.6 #14 QWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6Gui.so.6 #15 QWindow::setPosition(QPoint const&) () at /usr/lib64/libQt6Gui.so.6 #16 PlasmaQuick::PopupPlasmaWindowPrivate::updatePositionWayland (this=, position=...) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:193 #17 PlasmaQuick::PopupPlasmaWindowPrivate::updatePosition (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:178 #18 PlasmaQuick::PopupPlasmaWindow::event (this=, event=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:420 #19 QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6 #20 QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6 #21 QGuiApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent*) () at /usr/lib64/libQt6Gui.so.6 #22 ??? () at /usr/lib64/libQt6Gui.so.6 #23 QtWaylandClient::QWaylandWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6WaylandClient.so.6 #24 QWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6Gui.so.6 #25 QWindow::setPosition(QPoint const&) () at /usr/lib64/libQt6Gui.so.6 #26 PlasmaQuick::PopupPlasmaWindowPrivate::updatePositionWayland (this=, position=...) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:193 #27 PlasmaQuick::PopupPlasmaWindowPrivate::updatePosition (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:178 #28 PlasmaQuick::PopupPlasmaWindow::event (this=, event=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:420 [... tens of thousands more frames of the same calls ...] #80556 PlasmaQuick::PopupPlasmaWindowPrivate::updatePositionWayland (this=, position=...) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:193 #80557 PlasmaQuick::PopupPlasmaWindowPrivate::updatePosition (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:178 #80558 PlasmaQuick::PopupPlasmaWindow::event (this=, event=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:420 #80559 QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6 #80560 QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6 #80561 QGuiApplicationPrivate::processGeometryChangeEvent(QWindowSystemInterfacePrivate::GeometryChangeEvent*) () at /usr/lib64/libQt6Gui.so.6 #80562 ??? () at /usr/lib64/libQt6Gui.so.6 #80563 QtWaylandClient::QWaylandWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6WaylandClient.so.6 #80564 QWindow::setGeometry(QRect const&) () at /usr/lib64/libQt6Gui.so.6 #80565 QWindow::setPosition(QPoint const&) () at /usr/lib64/libQt6Gui.so.6 #80566 PlasmaQuick::PopupPlasmaWindowPrivate::updatePositionWayland (this=, position=...) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:193 #80567 PlasmaQuick::PopupPlasmaWindowPrivate::updatePosition (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:178 #80568 PlasmaQuick::PopupPlasmaWindow::event (this=, event=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/plasmaquick/popupplasmawindow.cpp:420 #80569 QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6 #80570 QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6 #80571 QWindowPrivate::setVisible(bool) () at /usr/lib64/libQt6Gui.so.6 #80572 ToolTipArea::showToolTip (this=) at /usr/src/debug/kde-plasma/libplasma-6.4.4/libplasma-6.4.4/src/declarativeimports/core/tooltiparea.cpp:178 #80573 ??? () at /usr/lib64/libQt6Core.so.6 #80574 QTimer::timerEvent(QTimerEvent*) () at /usr/lib64/libQt6Core.so.6 #80575 QObject::event(QEvent*) () at /usr/lib64/libQt6Core.so.6 #80576 QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6 #80577 QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6 #80578 QTimerInfoList::activateTimers() () at /usr/lib64/libQt6Core.so.6 #80579 ??? () at /usr/lib64/libQt6Core.so.6 #80580 ??? () at /usr/lib64/libglib-2.0.so.0 #80581 ??? () at /usr/lib64/libglib-2.0.so.0 #80582 g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0 #80583 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6 #80584 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6 #80585 QCoreApplication::exec() () at /usr/lib64/libQt6Core.so.6 #80586 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kde-plasma/plasma-sdk-6.4.4/plasma-sdk-6.4.4/plasmoidviewer/main.cpp:141 Even when using the attached patch to test for the Slide effect with KWindowEffects:isEffectAvailable, this bug occurs for me. Created attachment 184423 [details]
Patch to test for KWindowEffects::Effect::Slide
Thanks for looking into this. I agree this is not a duplicate of bug 506106. My fix however fixing both. My backtrace shows an additional Wayland geometry re-entrancy in PlasmaQuick::PopupPlasmaWindowPrivate::updatePositionWayland(): calling QWindow::setPosition() triggers a GeometryChange event that routes back into updatePosition*(), causing a recursion and SIGSEGV. Patch attached (against plasma-framework / PlasmaQuick, not plasma-sdk). Created attachment 184435 [details]
wayland-pos-fix.diff
|