Summary: | Plasma crashes when hovering over the options from the context menu of a popup | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | Patrick Silva <bugseforuns> |
Component: | Folder | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | akselmo, hein, nate |
Priority: | NOR | ||
Version: | 5.26.90 | ||
Target Milestone: | 1.0 | ||
Platform: | Arch Linux | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 6.1 | |
Sentry Crash Report: | |||
Attachments: | Massive backtrace |
Description
Patrick Silva
2023-01-04 20:03:29 UTC
Hmm, can't reproduce no matter how much I hover the popup's context menu iotions. I can reproduce even on Plasma 5.27 beta. Operating System: Arch Linux KDE Plasma Version: 5.26.90 KDE Frameworks Version: 5.102.0 Qt Version: 5.15.8 Graphics Platform: Wayland This crash is still reproducible on neon unstable and Arch Linux. Operating System: Arch Linux KDE Plasma Version: 5.27.80 KDE Frameworks Version: 5.245.0 Qt Version: 6.6.0 Graphics Platform: Wayland Managed to get this crash to happen, however I think it had something to do with closing the popup. Operating System: Fedora Linux 40 KDE Plasma Version: 6.1.80 KDE Frameworks Version: 6.4.0 Qt Version: 6.7.1 Kernel Version: 6.8.11-300.fc40.x86_64 (64-bit) Graphics Platform: Wayland Processors: 12 × AMD Ryzen 5 3600 6-Core Processor Memory: 15.5 GiB of RAM Graphics Processor: AMD Radeon RX 6600 Created attachment 170203 [details]
Massive backtrace
Got a massive backtrace, heres thread 1
Thread 1 (Thread 0x7f4e9444fb80 (LWP 74555)):
[KCrash Handler]
#5 QStringView::QStringView<QChar, true> (this=<optimized out>, str=Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x7300730065009a
#6 QStringView::QStringView<QString, true> (this=<optimized out>, str=...) at /usr/include/qt6/QtCore/qstringview.h:162
#7 operator< (s1=..., s2=...) at /usr/include/qt6/QtCore/qstring.h:752
#8 std::less<QString>::operator() (this=<optimized out>, __x=..., __y=...) at /usr/include/c++/14/bits/stl_function.h:405
#9 std::_Rb_tree<QString, std::pair<QString const, QAction*>, std::_Select1st<std::pair<QString const, QAction*> >, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::_M_lower_bound (this=0x4fcfc18, __x=0x73007300650072, __y=<optimized out>, __k=...) at /usr/include/c++/14/bits/stl_tree.h:1964
#10 std::_Rb_tree<QString, std::pair<QString const, QAction*>, std::_Select1st<std::pair<QString const, QAction*> >, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::find (this=this@entry=0x4fcfc18, __k=...) at /usr/include/c++/14/bits/stl_tree.h:2541
#11 0x00007f4e9d9ea652 in std::map<QString, QAction*, std::less<QString>, std::allocator<std::pair<QString const, QAction*> > >::find (this=0x4fcfc18, __x=...) at /usr/include/c++/14/bits/stl_map.h:1244
#12 QMap<QString, QAction*>::value (this=<optimized out>, key=..., defaultValue=<optimized out>) at /usr/include/qt6/QtCore/qmap.h:360
#13 KActionCollection::action (this=<optimized out>, name=...) at /home/akseli/Repositories/kde/src/kxmlgui/src/kactioncollection.cpp:139
#14 0x00007f4e6c10e4a9 in operator() (__closure=0xf83580) at /home/akseli/Repositories/kde/src/plasma-desktop/containments/desktop/plugins/folder/foldermodel.cpp:1903
#15 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, FolderModel::openContextMenu(QQuickItem*, Qt::KeyboardModifiers)::<lambda()> >::call (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137
#16 QtPrivate::FunctorCallable<FolderModel::openContextMenu(QQuickItem*, Qt::KeyboardModifiers)::<lambda()> >::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345
#17 QtPrivate::QCallableObject<FolderModel::openContextMenu(QQuickItem*, Qt::KeyboardModifiers)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0xf83570, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555
#18 0x00007f4e99ffa752 in QtPrivate::QSlotObjectBase::call (this=0xf83570, r=<optimized out>, a=0x7ffc5f59b178) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobjectdefs_impl.h:469
#19 doActivate<false> (sender=0x4ffa770, signal_index=8, argv=0x7ffc5f59b178) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobject.cpp:4086
#20 0x00007f4e99ff0b47 in QMetaObject::activate (sender=sender@entry=0x4ffa770, m=m@entry=0x7f4e9cf69660, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qobject.cpp:4146
#21 0x00007f4e9cb71a77 in QMenu::aboutToHide (this=this@entry=0x4ffa770) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/redhat-linux-build/src/widgets/Widgets_autogen/include/moc_qmenu.cpp:292
#22 0x00007f4e9cb7daea in QMenu::hideEvent (this=0x4ffa770) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/widgets/qmenu.cpp:2716
#23 0x00007f4e9c9ebf90 in QWidget::event (this=0x4ffa770, event=0x7ffc5f59b400) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qwidget.cpp:9402
#24 0x00007f4e9c98b168 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x4ffa770, e=0x7ffc5f59b400) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qapplication.cpp:3287
#25 0x00007f4e99f95b18 in QCoreApplication::notifyInternal2 (receiver=0x4ffa770, event=0x7ffc5f59b400) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1134
#26 0x00007f4e99f95d7d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1575
#27 0x00007f4e9c9e6086 in QWidgetPrivate::hide_helper (this=this@entry=0x51f5a40) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qwidget.cpp:8267
#28 0x00007f4e9c9eac3a in QWidgetPrivate::setVisible (this=0x51f5a40, visible=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qwidget.cpp:8460
#29 0x00007f4e9c9e6387 in QWidgetPrivate::handleClose (this=0x51f5a40, mode=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qwidget.cpp:8627
#30 0x00007f4e9c9fdb17 in QWidgetWindow::closeEvent (this=<optimized out>, event=0x7ffc5f59b790) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qwidgetwindow.cpp:832
#31 0x00007f4e9aa45e32 in QWindow::event (this=0x5046920, ev=0x7ffc5f59b790) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qwindow.cpp:2573
#32 0x00007f4e9c98b168 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5046920, e=0x7ffc5f59b790) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qapplication.cpp:3287
#33 0x00007f4e99f95b18 in QCoreApplication::notifyInternal2 (receiver=0x5046920, event=0x7ffc5f59b790) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1134
#34 0x00007f4e99f95d8d in QCoreApplication::sendSpontaneousEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qcoreapplication.cpp:1589
#35 0x00007f4e9a9e2852 in QGuiApplicationPrivate::processCloseEvent (e=0x53a5bb0) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qguiapplication.cpp:2745
#36 QGuiApplicationPrivate::processCloseEvent (e=0x53a5bb0) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qguiapplication.cpp:2733
#37 0x00007f4e9aa4952c in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qwindowsysteminterface.cpp:1114
#38 0x00007f4e9af54e74 in userEventSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/platform/unix/qeventdispatcher_glib.cpp:38
#39 0x00007f4e993046ac in g_main_dispatch (context=0x7f4e80000f00) at ../glib/gmain.c:3344
#40 g_main_context_dispatch_unlocked (context=0x7f4e80000f00) at ../glib/gmain.c:4152
#41 0x00007f4e99365708 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f4e80000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217
#42 0x00007f4e99305b23 in g_main_context_iteration (context=0x7f4e80000f00, may_block=1) at ../glib/gmain.c:4282
#43 0x00007f4e9a27cb53 in QEventDispatcherGlib::processEvents (this=0x969e60, flags=...) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#44 0x00007f4e99fa2713 in QEventLoop::exec (this=this@entry=0x7ffc5f59ba70, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/global/qflags.h:34
#45 0x00007f4e99f9e69c in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/corelib/global/qflags.h:74
#46 0x00007f4e9a9d53dd in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/gui/kernel/qguiapplication.cpp:1926
#47 0x00007f4e9c98b0d9 in QApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.1-2.fc40.x86_64/src/widgets/kernel/qapplication.cpp:2555
#48 0x0000000000426996 in main (argc=<optimized out>, argv=<optimized out>) at /home/akseli/Repositories/kde/src/plasma-workspace/shell/main.cpp:188
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/2296 Git commit 2772401d010bc59affa1367002f55a459d2d166d by Akseli Lahtinen. Committed on 07/06/2024 at 12:08. Pushed by akselmo into branch 'master'. foldermodel.cpp: add context to menu connection Menu connection was missing "this" as context, so it would be called even if "this" was not there anymore. The bug I've linked before is very difficult to reproduce, it seems to be a race condition that triggers rarely for some, more often for others. I have only gotten it happen once, but the backtrace indicates this seems to be the problem. M +1 -1 containments/desktop/plugins/folder/foldermodel.cpp https://invent.kde.org/plasma/plasma-desktop/-/commit/2772401d010bc59affa1367002f55a459d2d166d A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/2297 Nice! Let's call it fixed then, and we can always re-open this if it happens again after Plasma 6.1 is released. Git commit 2a1ad12c5cc46109f79db682a5ecb72d9641bfd3 by Nate Graham, on behalf of Akseli Lahtinen. Committed on 08/06/2024 at 13:10. Pushed by ngraham into branch 'Plasma/6.1'. foldermodel.cpp: add context to menu connection Menu connection was missing "this" as context, so it would be called even if "this" was not there anymore. The bug I've linked before is very difficult to reproduce, it seems to be a race condition that triggers rarely for some, more often for others. I have only gotten it happen once, but the backtrace indicates this seems to be the problem. (cherry picked from commit 2772401d010bc59affa1367002f55a459d2d166d) 8e83c02d foldermodel.cpp: add context to menu connection Co-authored-by: Akseli Lahtinen <akselmo@akselmo.dev> M +1 -1 containments/desktop/plugins/folder/foldermodel.cpp https://invent.kde.org/plasma/plasma-desktop/-/commit/2a1ad12c5cc46109f79db682a5ecb72d9641bfd3 |