Bug 416443 - QT Particles seem to overload and block KDE Plasma
Summary: QT Particles seem to overload and block KDE Plasma
Status: RESOLVED UPSTREAM
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-performance (other bugs)
Version First Reported In: 5.17.4
Platform: Other Linux
: NOR normal
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-01-19 10:01 UTC by Mihai Sorin Dobrescu
Modified: 2025-01-09 20:09 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
Plasma frozen (1.25 MB, image/png)
2020-01-25 07:06 UTC, Mihai Sorin Dobrescu
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Mihai Sorin Dobrescu 2020-01-19 10:01:18 UTC
SUMMARY

QT Particles seem to overload and block KDE Plasma.

ADDITIONAL INFORMATION

I was looking for something to provide me a winter ambient (not necessarily a Christmas feeling). I've found this: https://github.com/IvanSafonov/plasma-wallpaper-snow.

It is such a simple add-on. A few lines of code.
Still, it seems to crash KSE Plasma somehow.

The simplicity of the add-on makes me wonder if there is something wrong with QT/KDE/Plasma, although I have no clear clue.

Also, I have run this add-on every year in the winter.
Only now, the fourth year of its existence, I have faced such behaviour.
Maybe there is something changed in the frameworks, but I have no knowledge of this. If there is something to break it, should have some message for old and deprecated functions.

STEPS TO REPRODUCE
1. Install the Plasma Wallpaper Snow add-on from https://github.com/IvanSafonov/plasma-wallpaper-snow.
2. Set it up and let it go
3. In a day, KDE Plasma becames unresponsive, no UI interaction, looks frozen.

OBSERVED RESULT

KDE Plasma freezes.

EXPECTED RESULT

KDE Plasma should run the add-on for a long time, ideally for as long the device is on.

SOFTWARE/OS VERSIONS

Operating System: Sabayon/Gentoo Linux 
KDE Plasma Version: 5.17.4
KDE Frameworks Version: 5.65.0
Qt Version: 5.12.5
Kernel Version: 5.3.0-sabayon
OS Type: 64-bit
Processors: 8 × Intel® Core™ i7 CPU 920 @ 2.67GHz
Memory: 23,5 GiB of RAM
Comment 1 David Edmundson 2020-01-19 18:25:58 UTC
Anything that happens only with a 3rd party addon is never major. Changing status.

>Still, it seems to crash KSE Plasma somehow.

Crashes need a backtrace, or we can't do a lot. Please see the sad icon face in the system tray after plasmashell restarts or run plasmashell specifically in gdb. See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
Comment 2 Mihai Sorin Dobrescu 2020-01-19 19:11:55 UTC
I don't know, the issue is that KDE simply freezes.
I can't get to tray or anything else.
I have even tried the power down button on my PC.
The system does not respond anymore (it should initiate a shutdown).
No console available or anything else, the keyboard does not trigger anything.
It's completely unresponsive. This is what I've meant by "freezing".

I have a laptop that has the same behaviour.

The author of the add-on did not respond.
The code is so small. Does it "tells" anything?
Comment 3 Mihai Sorin Dobrescu 2020-01-24 10:09:16 UTC
I have looked for some crash data, but I can't find any.
Comment 4 David Edmundson 2020-01-24 10:19:33 UTC
Then I'm afraid i can't do anything.
Comment 5 Mihai Sorin Dobrescu 2020-01-24 10:43:41 UTC
Well, you could, but I presume you don't agree to try to reproduce it.
Comment 6 Mihai Sorin Dobrescu 2020-01-25 06:57:09 UTC
Hello, seems that updated Plasma version or the shorter time have lead it in a state when plasma is frozen, but tasks can still be changed and I have expanded a Yakuake, so I can issue commands.
What could I do to diagnose it, as I might have a short window of time to do that?

I can say that freeze occurs in less than 24 hours every time.
Comment 7 Mihai Sorin Dobrescu 2020-01-25 07:06:07 UTC
Created attachment 125387 [details]
Plasma frozen

It displays 05:31:11, the time when it froze, despite now is passed 08:00.
Comment 8 Mihai Sorin Dobrescu 2020-01-25 07:08:12 UTC
I've noticed another strange behaviour: in Dolphin, if I delete a file, the confirmation dialog appears and that Dolphin instance freezes after the user confirmation.
Comment 9 David Edmundson 2020-01-25 12:36:21 UTC
>What could I do to diagnose it, as I might have a short window of time to do that?

sudo gdb --pid `pidof plasmashell` 

then when it connects

type "thread apply all bt"

and copy and paste all the output
Comment 10 Mihai Sorin Dobrescu 2020-01-26 09:35:35 UTC
sudo gdb --pid `pidof plasmashell` 
GNU gdb (Gentoo 8.3.1 vanilla) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 15045
[New LWP 15072]
[New LWP 15081]
[New LWP 15093]
[New LWP 15112]
[New LWP 15186]
[New LWP 15395]
[New LWP 15524]
[New LWP 15527]
[New LWP 15593]
[New LWP 17582]
[New LWP 18903]

warning: File "/lib64/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
        add-auto-load-safe-path /lib64/libthread_db-1.0.so
line to your configuration file "/root/.gdbinit".
To completely disable this security protection add
        set auto-load safe-path /
line to your configuration file "/root/.gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual.  E.g., run from the shell:
        info "(gdb)Auto-loading safe path"

warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

warning: File "/lib64/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".

warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
0x00007fc2b887d109 in QQuickParticleDataHeap::swap(int, int) () from /usr/lib64/libQt5QuickParticles.so.5
warning: File "/home/admius/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
(gdb) thread apply all bt      

Thread 12 (LWP 18903):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 11 (LWP 17582):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e6b162e6 in  () at /usr/lib64/libQt5Quick.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 10 (LWP 15593):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 9 (LWP 15527):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 8 (LWP 15524):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2b11be6c7 in KCupsConnection::run() () at /usr/lib64/libkcupslib.so
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 7 (LWP 15395):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 6 (LWP 15186):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2ba065c45 in  () at /usr/lib64/qt5/qml/QtQuick/XmlListModel/libqmlxmllistmodelplugin.so
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 5 (LWP 15112):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#8  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 4 (LWP 15093):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e68499d5 in  () at /usr/lib64/libQt5Qml.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 3 (LWP 15081):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e5a32565 in  () at /usr/lib64/libQt5DBus.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6
--Type <RET> for more, q to quit, c to continue without paging--

Thread 2 (LWP 15072):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e718e9e0 in  () at /usr/lib64/libxcb.so.1
#2  0x00007fc2e7190cc9 in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007fc2d272e480 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#6  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 1 (LWP 15045):
#0  0x00007fc2b887d109 in QQuickParticleDataHeap::swap(int, int) () at /usr/lib64/libQt5QuickParticles.so.5
#1  0x00007fc2b887d6fa in QQuickParticleDataHeap::bubbleDown(int) () at /usr/lib64/libQt5QuickParticles.so.5
#2  0x00007fc2b887db83 in QQuickParticleDataHeap::pop() () at /usr/lib64/libQt5QuickParticles.so.5
#3  0x00007fc2b887e536 in QQuickParticleGroupData::recycle() () at /usr/lib64/libQt5QuickParticles.so.5
#4  0x00007fc2b8880fc8 in  () at /usr/lib64/libQt5QuickParticles.so.5
#5  0x00007fc2e504b5a1 in QAbstractAnimation::setCurrentTime(int) () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e504b6d7 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fc2e5049c3b in QUnifiedTimer::updateAnimationTimers(long long) () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e504a51c in QAnimationDriver::advanceAnimation(long long) () at /usr/lib64/libQt5Core.so.5
#9  0x00007fc2e6b72bb9 in  () at /usr/lib64/libQt5Quick.so.5
#10 0x00007fc2e6b9769f in  () at /usr/lib64/libQt5Quick.so.5
#11 0x00007fc2e5c9f5b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#12 0x00007fc2e5ca6b90 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#13 0x00007fc2e51ef3d2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#14 0x00007fc2e523fc94 in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#15 0x00007fc2e52404dc in  () at /usr/lib64/libQt5Core.so.5
#16 0x00007fc2e2d2d5ae in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#17 0x00007fc2e2d2d848 in  () at /usr/lib64/libglib-2.0.so.0
#18 0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#19 0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#20 0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#21 0x00007fc2e51f6132 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#22 0x0000560bda5a2223 in  ()
#23 0x00007fc2e4bece4b in __libc_start_main () at /lib64/libc.so.6
#24 0x0000560bda5a264a in _start ()
Comment 11 Mihai Sorin Dobrescu 2020-01-26 09:37:28 UTC
I have no debug symbols, AFAIK, as it is a Sabayon regular release installation.
It took less than 12 hours to freeze.
Comment 12 Mihai Sorin Dobrescu 2020-01-26 11:22:52 UTC
gdb --pid `pidof plasmashell` 
GNU gdb (Gentoo 8.3.1 vanilla) 8.3.1
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://bugs.gentoo.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 15045
[New LWP 15072]
[New LWP 15081]
[New LWP 15093]
[New LWP 15112]
[New LWP 15186]
[New LWP 15395]
[New LWP 15524]
[New LWP 15527]
[New LWP 15593]
[New LWP 17582]
[New LWP 18903]

warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
0x00007fc2b887d20d in QQuickParticleDataHeap::swap(int, int) () from /usr/lib64/libQt5QuickParticles.so.5
(gdb) thread apply all bt

Thread 12 (LWP 18903):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 11 (LWP 17582):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e6b162e6 in  () at /usr/lib64/libQt5Quick.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 10 (LWP 15593):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 9 (LWP 15527):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 8 (LWP 15524):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2b11be6c7 in KCupsConnection::run() () at /usr/lib64/libkcupslib.so
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 7 (LWP 15395):
#0  0x00007fc2e432c13c in pthread_cond_wait () at /lib64/libpthread.so.0
#1  0x00007fc2e5067c73 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () at /usr/lib64/libQt5Core.so.5
#2  0x00007fc2e5067cf9 in QWaitCondition::wait(QMutex*, unsigned long) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fc2e6b9c949 in  () at /usr/lib64/libQt5Quick.so.5
#4  0x00007fc2e6b9cbaa in  () at /usr/lib64/libQt5Quick.so.5
#5  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#7  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 6 (LWP 15186):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2ba065c45 in  () at /usr/lib64/qt5/qml/QtQuick/XmlListModel/libqmlxmllistmodelplugin.so
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 5 (LWP 15112):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#8  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 4 (LWP 15093):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e68499d5 in  () at /usr/lib64/libQt5Qml.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 3 (LWP 15081):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e2d2d7b6 in  () at /usr/lib64/libglib-2.0.so.0
#2  0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#3  0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#4  0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e5061296 in QThread::exec() () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e5a32565 in  () at /usr/lib64/libQt5DBus.so.5
#7  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#9  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6
--Type <RET> for more, q to quit, c to continue without paging--

Thread 2 (LWP 15072):
#0  0x00007fc2e4cc3f73 in poll () at /lib64/libc.so.6
#1  0x00007fc2e718e9e0 in  () at /usr/lib64/libxcb.so.1
#2  0x00007fc2e7190cc9 in xcb_wait_for_event () at /usr/lib64/libxcb.so.1
#3  0x00007fc2d272e480 in  () at /usr/lib64/libQt5XcbQpa.so.5
#4  0x00007fc2e50624b2 in  () at /usr/lib64/libQt5Core.so.5
#5  0x00007fc2e4325458 in  () at /lib64/libpthread.so.0
#6  0x00007fc2e4cd000f in clone () at /lib64/libc.so.6

Thread 1 (LWP 15045):
#0  0x00007fc2b887d20d in QQuickParticleDataHeap::swap(int, int) () at /usr/lib64/libQt5QuickParticles.so.5
#1  0x00007fc2b887d5c0 in QQuickParticleDataHeap::bubbleUp(int) () at /usr/lib64/libQt5QuickParticles.so.5
#2  0x00007fc2b887def2 in QQuickParticleDataHeap::insertTimed(QQuickParticleData*, int) () at /usr/lib64/libQt5QuickParticles.so.5
#3  0x00007fc2b887e629 in QQuickParticleGroupData::recycle() () at /usr/lib64/libQt5QuickParticles.so.5
#4  0x00007fc2b8880fc8 in  () at /usr/lib64/libQt5QuickParticles.so.5
#5  0x00007fc2e504b5a1 in QAbstractAnimation::setCurrentTime(int) () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e504b6d7 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fc2e5049c3b in QUnifiedTimer::updateAnimationTimers(long long) () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e504a51c in QAnimationDriver::advanceAnimation(long long) () at /usr/lib64/libQt5Core.so.5
#9  0x00007fc2e6b72bb9 in  () at /usr/lib64/libQt5Quick.so.5
#10 0x00007fc2e6b9769f in  () at /usr/lib64/libQt5Quick.so.5
#11 0x00007fc2e5c9f5b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#12 0x00007fc2e5ca6b90 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#13 0x00007fc2e51ef3d2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#14 0x00007fc2e523fc94 in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#15 0x00007fc2e52404dc in  () at /usr/lib64/libQt5Core.so.5
#16 0x00007fc2e2d2d5ae in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#17 0x00007fc2e2d2d848 in  () at /usr/lib64/libglib-2.0.so.0
#18 0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#19 0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#20 0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#21 0x00007fc2e51f6132 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#22 0x0000560bda5a2223 in  ()
#23 0x00007fc2e4bece4b in __libc_start_main () at /lib64/libc.so.6
#24 0x0000560bda5a264a in _start ()
Comment 13 Mihai Sorin Dobrescu 2020-01-26 11:24:00 UTC
Hi, ignore the first debug output, I've reconfigured gdb.
Comment 14 Nate Graham 2021-02-23 20:41:45 UTC
The relevant-seeming thread:

Thread 1 (LWP 15045):
#0  0x00007fc2b887d20d in QQuickParticleDataHeap::swap(int, int) () at /usr/lib64/libQt5QuickParticles.so.5
#1  0x00007fc2b887d5c0 in QQuickParticleDataHeap::bubbleUp(int) () at /usr/lib64/libQt5QuickParticles.so.5
#2  0x00007fc2b887def2 in QQuickParticleDataHeap::insertTimed(QQuickParticleData*, int) () at /usr/lib64/libQt5QuickParticles.so.5
#3  0x00007fc2b887e629 in QQuickParticleGroupData::recycle() () at /usr/lib64/libQt5QuickParticles.so.5
#4  0x00007fc2b8880fc8 in  () at /usr/lib64/libQt5QuickParticles.so.5
#5  0x00007fc2e504b5a1 in QAbstractAnimation::setCurrentTime(int) () at /usr/lib64/libQt5Core.so.5
#6  0x00007fc2e504b6d7 in  () at /usr/lib64/libQt5Core.so.5
#7  0x00007fc2e5049c3b in QUnifiedTimer::updateAnimationTimers(long long) () at /usr/lib64/libQt5Core.so.5
#8  0x00007fc2e504a51c in QAnimationDriver::advanceAnimation(long long) () at /usr/lib64/libQt5Core.so.5
#9  0x00007fc2e6b72bb9 in  () at /usr/lib64/libQt5Quick.so.5
#10 0x00007fc2e6b9769f in  () at /usr/lib64/libQt5Quick.so.5
#11 0x00007fc2e5c9f5b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#12 0x00007fc2e5ca6b90 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#13 0x00007fc2e51ef3d2 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#14 0x00007fc2e523fc94 in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#15 0x00007fc2e52404dc in  () at /usr/lib64/libQt5Core.so.5
#16 0x00007fc2e2d2d5ae in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#17 0x00007fc2e2d2d848 in  () at /usr/lib64/libglib-2.0.so.0
#18 0x00007fc2e2d2d8dc in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#19 0x00007fc2e5240913 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#20 0x00007fc2e51ee2eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#21 0x00007fc2e51f6132 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#22 0x0000560bda5a2223 in  ()
#23 0x00007fc2e4bece4b in __libc_start_main () at /lib64/libc.so.6
#24 0x0000560bda5a264a in _start ()
Comment 15 Nate Graham 2025-01-09 20:09:51 UTC
So yeah, it shows that, indeed, there's a slowdown when using particle effects on the desktop.

I don't find that terribly surprising, especially with the terrible performance of integrated Intel GPUs circa 2020. Any improvement here would have to come from Qt or Intel.

If you don't want your desktop to be slow, don't use an animated wallpaper with particle effects. :)