Bug 513666

Summary: Creating many QTerminal tabs hangs plasmashell in TaskManager::windowUrlFromMetadata() / KServiceFactory::createEntry() with a duration dependent upon the amount of tabs
Product: [Plasma] plasmashell Reporter: Roke Julian Lockhart Beedell <4wy78uwh>
Component: generic-crashAssignee: Plasma Bugs List <plasma-bugs-null>
Status: REPORTED ---    
Severity: crash CC: kdedev, nate
Priority: NOR Keywords: drkonqi
Version First Reported In: 6.5.4   
Target Milestone: 1.0   
Platform: Fedora RPMs   
OS: Linux   
URL: https://bugzilla.redhat.com/show_bug.cgi?id=2411800#c27
See Also: https://bugzilla.redhat.com/show_bug.cgi?id=2411800
https://bugs.kde.org/show_bug.cgi?id=513197
https://github.com/lxqt/qterminal/issues/1309#issuecomment-3679158118
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: New crash information added by DrKonqi
`$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc/`

Description Roke Julian Lockhart Beedell 2025-12-21 17:32:10 UTC
Application: plasmashell (6.5.4)

ApplicationNotResponding [ANR]: false
Qt Version: 6.10.1
Frameworks Version: 6.21.0
Operating System: Linux 6.17.12-300.fc43.x86_64 x86_64
Windowing System: Wayland
Distribution: "Fedora Linux 43 (KDE Plasma Desktop Edition)"
DrKonqi: 6.5.4 [CoredumpBackend]

-- Information about the crash:
As stated at https://bugzilla.redhat.com/show_bug.cgi?id=2411800#c27:

"Upon reproducing https://bugs.kde.org/show_bug.cgi?id=513197#c4, PlasmaShell hung [^1] longer than it otherwise would, at a lower maximum `ulimit -n` count. [^2] To remediate this, I invoked `qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout`. Upon login via SDDM, Konqi and GNOME Abrt appeared."

[^1]: https://github.com/lxqt/qterminal/issues/1309#issue-3711878851

[^2]: https://bugzilla.redhat.com/show_bug.cgi?id=2411800#c24

The crash can be reproduced every time.

-- Backtrace (Reduced):
#5  0x00007f7f3398364f in QVariant::fromMetaType (type=..., copy=copy@entry=0x0) at /usr/src/debug/qt6-qtbase-6.10.1-2.fc43.x86_64/src/corelib/kernel/qvariant.cpp:2694
#6  0x00007f7f339837c8 in QVariant::create (this=this@entry=0x7ffd1fc13df0, type=..., copy=copy@entry=0x0) at /usr/src/debug/qt6-qtbase-6.10.1-2.fc43.x86_64/src/corelib/kernel/qvariant.cpp:511
#7  0x00007f7f3398386a in QVariant::create (this=this@entry=0x7ffd1fc13df0, type=<optimized out>, copy=copy@entry=0x0) at /usr/src/debug/qt6-qtbase-6.10.1-2.fc43.x86_64/src/corelib/kernel/qvariant.cpp:500
#8  0x00007f7f3398486b in QVariant::load (this=this@entry=0x7ffd1fc13df0, s=...) at /usr/src/debug/qt6-qtbase-6.10.1-2.fc43.x86_64/src/corelib/kernel/qvariant.cpp:1244
#9  0x00007f7f33984b8b in operator>> (s=..., p=...) at /usr/src/debug/qt6-qtbase-6.10.1-2.fc43.x86_64/src/corelib/kernel/qvariant.cpp:1378
#10 0x00007f7f3686d027 in QtPrivate::readAssociativeContainer<QMap<QString, QVariant> > (s=..., c=...) at /usr/include/qt6/QtCore/qdatastream.h:359
#11 operator>><QString, QVariant> (s=..., map=...) at /usr/include/qt6/QtCore/qdatastream.h:611
#12 KServicePrivate::load (this=0x559590a6b020, s=<optimized out>) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kservice.cpp:232
#13 KServicePrivate::KServicePrivate (this=0x559590a6b020, _str=<optimized out>, _offset=<optimized out>) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kservice_p.h:31
#14 KService::KService (this=0x5595a203f500, _str=<optimized out>, _offset=<optimized out>) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kservice.cpp:296
#15 KServiceFactory::createEntry (this=<optimized out>, offset=<optimized out>) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kservicefactory.cpp:206
#16 0x00007f7f3687e9af in KSycocaFactory::allEntries (this=0x55959858ef60) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/sycoca/ksycocafactory.cpp:202
#17 0x00007f7f36869aec in KServiceFactory::allServices (this=<optimized out>) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kservicefactory.cpp:218
#18 0x00007f7f368614aa in KApplicationTrader::query (filterFunc=...) at /usr/src/debug/kf6-kservice-6.21.0-1.fc43.x86_64/src/services/kapplicationtrader.cpp:68
#19 0x00007f7efdb6f1a9 in TaskManager::windowUrlFromMetadata (appId=<optimized out>, pid=159453, rulesConfig=..., xWindowsWMClassName=<optimized out>) at /usr/src/debug/plasma-workspace-6.5.4-1.fc43.x86_64/libtaskmanager/tasktools.cpp:391
#20 0x00007f7efdb78931 in TaskManager::WaylandTasksModel::Private::appData (this=0x55958ea09cf0, window=window@entry=0x559591f52820) at /usr/src/debug/plasma-workspace-6.5.4-1.fc43.x86_64/libtaskmanager/waylandtasksmodel.cpp:823


Reported using DrKonqi
Comment 1 Roke Julian Lockhart Beedell 2025-12-21 17:32:11 UTC
Created attachment 187853 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nate Graham 2025-12-22 21:06:48 UTC
How many tabs are we talking about?

How are you opening them? By holding down Ctrl+Shift+T or something?

Are you using an icons-and-text task manager?

Does QTerminal change its window title when you create a new tab?
Comment 3 Roke Julian Lockhart Beedell 2025-12-24 10:52:48 UTC
Created attachment 187935 [details]
`$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc/`

(In reply to Nate Graham from comment #2)

> How many tabs are we talking about?

⋛ 195; [^1] it's much worse when the `ulimit -n` for the terminal has been increased, but occurs regardless.

[^1]: https://github.com/lxqt/qterminal/issues/1309#issue-3711878851

> How are you opening them? By holding down Ctrl+Shift+T or something?

Yes. (The aforecited first happened when the cat was on my keyboard.)

> Are you using an icons-and-text task manager?

Yes. I've attached `$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc/`. [^2]

[^2]: https://discuss.kde.org/t/panel-config-file-location/30764/2?u=rokejulianlockhart

> Does QTerminal change its window title when you create a new tab?

Yes, to the name of the tab; it increments a number by one, each time a tab is created.