Bug 472412

Summary: plasmashell sometimes crashes in PlasmaQuick::Dialog::event() clicking on open apps in the Task Manager to switch to them
Product: [Plasma] plasmashell Reporter: Nate Graham <nate>
Component: Task Manager and Icons-Only Task Manager widgetsAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: notmart
Priority: NOR Keywords: qt6
Version: master   
Target Milestone: 1.0   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Nate Graham 2023-07-20 01:31:07 UTC
STEPS TO REPRODUCE
1. Open an app
2. Click on its Task manager icon


OBSERVED RESULT
Sometimes (like, 5% of the time), plasmashell crashes with a backtrace like this:

#0  __pthread_kill_implementation
    (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f68514b08b3 in __pthread_kill_internal (signo=11, threadid=<optimized out>)
    at pthread_kill.c:78
#2  0x00007f685145fabe in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#3  0x00007f6854b30916 in KCrash::defaultCrashHandler(int) (sig=11)
    at /home/nate/kde/src/kcrash/src/kcrash.cpp:616
#4  0x00007f685145fb70 in <signal handler called> () at /lib64/libc.so.6
#5  __pthread_kill_implementation
    (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
#6  0x00007f68514b08b3 in __pthread_kill_internal (signo=11, threadid=<optimized out>)
    at pthread_kill.c:78
#7  0x00007f685145fabe in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#8  0x00007f685145fb70 in <signal handler called> () at /lib64/libc.so.6
#9  0x00007f68514ab1d7 in __futex_abstimed_wait_common64
    (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x3c1bd34)
    at futex-internal.c:57
#10 __futex_abstimed_wait_common
    (futex_word=futex_word@entry=0x3c1bd34, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true) at futex-internal.c:87
#11 0x00007f68514ab25f in __GI___futex_abstimed_wait_cancelable64
    (futex_word=futex_word@entry=0x3c1bd34, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at futex-internal.c:139
#12 0x00007f68514adb79 in __pthread_cond_wait_common
    (abstime=0x0, clockid=0, mutex=<optimized out>, cond=0x3c1bd08) at pthread_cond_wait.c:503
#13 ___pthread_cond_wait (cond=0x3c1bd08, mutex=<optimized out>) at pthread_cond_wait.c:618
#14 0x00007f6851d0b1ab in QWaitConditionPrivate::wait(QDeadlineTimer) (deadline=..., this=0x3c1bce0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:87
#15 QWaitCondition::wait(QMutex*, QDeadlineTimer)
    (this=<optimized out>, mutex=0x52d6638, deadline=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/thread/qwaitcondition_unix.cpp:160
#16 0x00007f68544c53ab in QSGThreadedRenderLoop::handleObscurity(QSGThreadedRenderLoop::Window*)
    (this=this@entry=0x16382c0, w=0x25eceb8)
    at /usr/src/debug/qt6-qtdeclarative-6.5.1-1.fc38.x86_64/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1323
#17 0x00007f68544c6176 in QSGThreadedRenderLoop::hide(QQuickWindow*)
    (this=0x16382c0, window=0x1ddf6d0)
    at /usr/src/debug/qt6-qtdeclarative-6.5.1-1.fc38.x86_64/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1116
#18 0x00007f6852460438 in QWindow::event(QEvent*) (this=0x1ddf6d0, ev=0x7ffce0aca2f0, 
    ev@entry=0xd2bb60)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/gui/kernel/qwindow.cpp:2523
#19 0x00007f68542e77a0 in QQuickWindow::event(QEvent*) (this=this@entry=0x1ddf6d0, event=0xd2bb60, 
    event@entry=0x7ffce0aca2f0)
    at /usr/src/debug/qt6-qtdeclarative-6.5.1-1.fc38.x86_64/src/quick/items/qquickwindow.cpp:1570
#20 0x00007f685543f83d in PlasmaQuick::Dialog::event(QEvent*)
    (this=this@entry=0x1ddf6d0, event=event@entry=0x7ffce0aca2f0)
    at /home/nate/kde/src/plasma-framework/src/plasmaquick/dialog.cpp:1596
#21 0x00007f682ffd3645 in ToolTipDialog::event(QEvent*) (this=0x1ddf6d0, e=0x7ffce0aca2f0)
    at /home/nate/kde/src/plasma-framework/src/declarativeimports/core/tooltipdialog.cpp:88
#22 0x00007f68531c0b08 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x1ddf6d0, e=0x7ffce0aca2f0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:3287
#23 0x00007f6851b7c308 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x1ddf6d0, event=0x7ffce0aca2f0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115
#24 0x00007f6851b7c50d in QCoreApplication::sendEvent(QObject*, QEvent*)
    (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1533
#25 0x00007f685245d721 in QWindowPrivate::setVisible(bool) (visible=false, this=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/gui/kernel/qwindow.cpp:397
#26 QWindow::setVisible(bool) (this=<optimized out>, visible=false)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/gui/kernel/qwindow.cpp:651
#27 0x00007f6851bddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**)
    (a=0x7ffce0aca430, r=0x1ddf6d0, this=0x1dea400)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#28 doActivate<false>(QObject*, int, void**) (sender=0x1dea420, signal_index=3, argv=0x7ffce0aca430)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#29 0x00007f6851bd4757 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=<optimized out>, m=m@entry=0x7f685200a200, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffce0aca430)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:4052
#30 0x00007f6851bef90d in QTimer::timeout(QTimer::QPrivateSignal) (this=<optimized out>, _t1=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qtimer.cpp:272
#31 0x00007f6851bcf70f in QObject::event(QEvent*) (this=0x1dea420, e=0x7ffce0aca5c0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:1413
#32 0x00007f68531c0b08 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    (this=<optimized out>, receiver=0x1dea420, e=0x7ffce0aca5c0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:3287
#33 0x00007f6851b7c308 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    (receiver=0x1dea420, event=0x7ffce0aca5c0)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115
#34 0x00007f6851b7c50d in QCoreApplication::sendEvent(QObject*, QEvent*)
    (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1533
#35 0x00007f6851d005b3 in QTimerInfoList::activateTimers() (this=0xd8a500)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qtimerinfo_unix.cpp:613
#36 0x00007f6851e1fc79 in timerSourceDispatch(GSource*, GSourceFunc, gpointer)
    (source=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:149
#37 0x00007f6850ddc39c in g_main_dispatch (context=0x7f6838000f10) at ../glib/gmain.c:3460
#38 g_main_context_dispatch (context=0x7f6838000f10) at ../glib/gmain.c:4200
#39 0x00007f6850e3a438 in g_main_context_iterate.isra.0
    (context=0x7f6838000f10, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
#40 0x00007f6850dd9a23 in g_main_context_iteration (context=0x7f6838000f10, may_block=1)
    at ../glib/gmain.c:4343
#41 0x00007f6851e1ff7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=0xd2df50, flags=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:393
#42 0x00007f6851b88e93 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    (this=this@entry=0x7ffce0aca880, flags=..., flags@entry=...)
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:34
#43 0x00007f6851b84b3d in QCoreApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:74
#44 0x00007f68523f85cd in QGuiApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/gui/kernel/qguiapplication.cpp:1894
#45 0x00007f68531c0a79 in QApplication::exec() ()
    at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/widgets/kernel/qapplication.cpp:2566
#46 0x0000000000424fc0 in main(int, char**) (argc=<optimized out>, argv=<optimized out>)
    at /home/nate/kde/src/plasma-workspace/shell/main.cpp:242


EXPECTED RESULT
Crashes 0% of the time


SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 38
KDE Plasma Version: 5.27.80
KDE Frameworks Version: 5.240.0
Qt Version: 6.5.1
Kernel Version: 6.3.11-200.fc38.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i7-10510U CPU @ 1.80GHz
Memory: 15.2 GiB of RAM
Graphics Processor: Mesa Intel® UHD Graphics
Comment 1 Nate Graham 2023-08-15 20:19:29 UTC
Reproduced this again today with the following steps:

1. Hover the pointer over one Task Manager icon for an open all
2. Wait until its tooltip appears
3. move the pointer over to another open Task
Comment 2 Marco Martin 2023-11-23 16:39:30 UTC
we ported away from PlasmaQuick::Dialog.
if similar crashes still happen, please open a new bug instead