Bug 449984

Summary: Plasma 5.24.0 NetworkManager cannot get secrets using DBus when using a proxy
Product: [Frameworks and Libraries] frameworks-kio Reporter: steveb <tniagcpm>
Component: generalAssignee: Jan Grulich <jgrulich>
Status: RESOLVED FIXED    
Severity: major CC: chermnykh2001, daniel, elman, enrico.tagliavini, jonathan.doman, kde, kde, kdelibs-bugs, lucamilo123123, luigi.toscano, matthew.linux, nate, nicolas.fella, postix, xmhjnathan
Priority: NOR Keywords: regression
Version: 5.24.0   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=457341
Latest Commit: Version Fixed In: 5.26.0, 5.24.7
Sentry Crash Report:

Description steveb 2022-02-11 01:00:49 UTC
SUMMARY
Since an upgrade to 5.24 network connections that use secrets (WiFi, VPN) will not connect.

STEPS TO REPRODUCE
Attempt to connect to a WiFi or VPN connection.

OBSERVED RESULT
The connection stops with "needs authorisation" showing in the applet. They connection never works.

EXPECTED RESULT
Connection succeeds.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: KDE neon 5.24
KDE Plasma Version: 5.24.0
KDE Frameworks Version: 5.90.0
Qt Version: 5.15.3
Kernel 5.13.0-28
Wayland

ADDITIONAL INFORMATION
Affects both 'applet'  and 'editor'.

I could get a WiFi up using "nmcli --ask connection up <WiFiConnectionName>", which prompted for the password.
That doesn't work for the VPN connections.

SystemSettings/Connections don't show the secrets either, just empty fields instead of the circle characters.
Maybe 30sec later, it produces Notifications:
"Failed to get secrets for <ConnectionName>"
"Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
Comment 1 steveb 2022-02-11 09:43:57 UTC
I have used "dbus-monitor --system" to investigate.

The call to GetSecrets does not get a reply:
> method call time=1644566969.208756 sender=:1.11 -> destination=:1.48 serial=3114 path=/org/freedesktop/NetworkManager/SecretAgent; interface=org.freedesktop.NetworkManager.SecretAgent; member=GetSecrets
In my case :1.48 is /usr/bin/kded5 and it should respond to interface=org.freedesktop.NetworkManager.SecretAgent
On another working machine (kubuntu 21.10, 5.22.5, 5.86) the method reply contains the secret (the password).

Using "d-feet" I find that viewing any DBus named "org.kde..." or ":1.xxx" for any kde related process hangs "Introspecting..."
Neither the Name: or Unique name: fields are populated.
Comment 2 zhaozihanrxh 2022-02-14 14:58:58 UTC
New here, hope my comment is useful. If I violate the rules, please tell me...
This happens on my Arch Linux. Here is my journalctl: https://fars.ee/lZ7A
In addition, if I manage to keep my WiFi password not encrypted I can connect to it.
After downgrading plasma-desktop and plasma-workspace to 5.23.5 (in the meanwhile the plasma-nm is still 5.24.0) the problem is gone. So maybe the problem isn't related to plasma-nm? 

Operating System: Arch Linux
KDE Plasma Version: 5.24.0
KDE Frameworks Version: 5.90.0
Qt Version: 5.15.2
Kernel Version: 5.16.8-arch1-1 (64-bit)
Graphics Platform: X11
Comment 3 Nicolas Fella 2022-02-16 13:31:13 UTC
I can't reproduce this, wifi and VPN passwords work fine on all of my systems
Comment 4 Nicolas Fella 2022-02-16 13:32:34 UTC
(In reply to zhaozihanrxh from comment #2)
> This happens on my Arch Linux. Here is my journalctl: https://fars.ee/lZ7A

Relevant looking part of the logs:

2月 14 14:47:48 ME-HASEE NetworkManager[525]: <info>  [1644821268.8667] device (wlp0s20f3): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <info>  [1644821268.8670] device (wlp0s20f3): Activation: (wifi) access point 'HONOR 9X HULK' has security, but secrets are required.
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <info>  [1644821268.8670] device (wlp0s20f3): state change: config -> need-auth (reason 'none', sys-iface-state: 'managed')
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <warn>  [1644821268.8675] device (wlp0s20f3): no secrets: No agents were available for this request.
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <info>  [1644821268.8675] device (wlp0s20f3): state change: need-auth -> failed (reason 'no-secrets', sys-iface-state: 'managed')
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <info>  [1644821268.8677] manager: NetworkManager state is now DISCONNECTED
2月 14 14:47:48 ME-HASEE NetworkManager[525]: <warn>  [1644821268.8679] device (wlp0s20f3): Activation: failed for connection 'HONOR 9X HULK'
Comment 5 steveb 2022-02-17 09:01:06 UTC
An upgrade today to Plasma 5.24.1 & Frameworks 5.91.0 has not changed behavior.

Nicholas,
See Comment 1 - It's a problem with KDED, where it is not responding properly to D-Bus message.
Looking at KDED source, it possibly could be that the KDED plugins are not being loaded properly? I can not tell.

How can I see Qt logger messages? If I can enable & see them, I might be able to see what is going on.
Comment 6 Nicolas Fella 2022-02-17 11:11:57 UTC
(In reply to steveb from comment #5)
> Looking at KDED source, it possibly could be that the KDED plugins are not
> being loaded properly? I can not tell.
You can check that using "qdbus org.kde.kded5 /kded org.kde.kded5.loadedModules", make sure it contains networkmanagement
 
> How can I see Qt logger messages? If I can enable & see them, I might be
> able to see what is going on.

Using journalctl. Also you can use https://invent.kde.org/utilities/kdebugsettings to control what gets logged
Comment 7 steveb 2022-02-18 12:30:36 UTC
(In reply to Nicolas Fella from comment #6)

Looking for loaded modules failed, using "qdbus org.kde.kded5 /kded org.kde.kded5.loadedModules"
> Error: org.freedesktop.DBus.Error.NoReply

Enabling debug messages with kdebugsettings, I see only:
> klauncher[1346]: kf.init.klauncher: new app "org.kde.kded5"
I would expect to also see DEBUG messages like "Successfully loaded module xxxx", but there are none.

The kded plugins are in:   /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kded
How does kded5 find them?
Comment 8 Nicolas Fella 2022-02-18 12:58:58 UTC
(In reply to steveb from comment #7) 
> The kded plugins are in:   /usr/lib/x86_64-linux-gnu/qt5/plugins/kf5/kded
> How does kded5 find them?

The relevant code is at https://invent.kde.org/frameworks/kded/-/blob/master/src/kded.cpp#L132

However, it doesn't sound like the module is not loaded. I tried manually disabling the module in the background services settings and the symptoms are different, the connection attempt fails instantly.

It sounds like there is some generic problem with kded, not specifically the network module. this would also match this:
> After downgrading plasma-desktop and plasma-workspace to 5.23.5 (in the meanwhile the plasma-nm is still 5.24.0) the problem is gone. So maybe the problem isn't related to plasma-nm?
Comment 9 Nicolas Fella 2022-02-18 13:16:08 UTC
> After downgrading plasma-desktop and plasma-workspace to 5.23.5 (in the meanwhile the plasma-nm is still 5.24.0) the problem is gone.

I'd say it's much more likely to be caused by plasma-workspace than plasma-desktop. Ideally someone would perform a git bisect on it
Comment 10 steveb 2022-02-19 01:46:31 UTC
Yes, plasma-workspace. I tried another user account, and things were working properly with it, so it's not a system thing.
I found that there is something in ~/.config that is causing this.
Starting with an empty .config directory got everything working again.
Comment 11 Dmitrii Chermnykh 2022-02-19 17:05:48 UTC
Can confirm on 5.24.1 archlinux
In my case networkmanager works fine, but other components break:
- system tray
- keyboard layout switching 
- global menu
- notifications
- kscreen

On clean user account system works fine so the problem is due to some user configuration.
Rolling `plasma-workspace` back to 5.23.5 fixes the problem
Comment 12 steveb 2022-02-20 07:33:29 UTC
I found that the System Setting "Detect proxy configuration automatically" was causing it for me.

Setting is saved in file ~/.config/kioslaverc
Removing the file, or changing [Proxy Settings] ProxyType from 3 to 0 will fix a broken system.

However, setting the same Proxy setting on a 5.24 system will not break it.
Comment 13 Dmitrii Chermnykh 2022-02-20 11:54:00 UTC
(In reply to steveb from comment #12)
> I found that the System Setting "Detect proxy configuration automatically"
> was causing it for me.
> 
> Setting is saved in file ~/.config/kioslaverc
> Removing the file, or changing [Proxy Settings] ProxyType from 3 to 0 will
> fix a broken system.
> 
> However, setting the same Proxy setting on a 5.24 system will not break it.

This also fixed the problem for me
Comment 14 zhaozihanrxh 2022-02-21 01:21:19 UTC
(In reply to steveb from comment #12)
> I found that the System Setting "Detect proxy configuration automatically"
> was causing it for me.
> 
> Setting is saved in file ~/.config/kioslaverc
> Removing the file, or changing [Proxy Settings] ProxyType from 3 to 0 will
> fix a broken system.
> 
> However, setting the same Proxy setting on a 5.24 system will not break it.

Oh, this workaround also worked for me.
Comment 15 Luigi Toscano 2022-02-26 16:00:27 UTC
(In reply to steveb from comment #12)
> I found that the System Setting "Detect proxy configuration automatically"
> was causing it for me.
> 
> Setting is saved in file ~/.config/kioslaverc
> Removing the file, or changing [Proxy Settings] ProxyType from 3 to 0 will
> fix a broken system.
> 
> However, setting the same Proxy setting on a 5.24 system will not break it.

I confirm this workaround on Fedora 35 too. I just upgraded from Plasma 5.23.5 to 5.24.2 and Frameworks 5.90 to 5.91 on Fedora 35 and I had to use this workaround too. I had ProxyType=2 and a custom Proxy Config Script.
Comment 16 xmhjnathan 2022-03-13 07:59:13 UTC
(In reply to Nicolas Fella from comment #6)
> (In reply to steveb from comment #5)
> > Looking at KDED source, it possibly could be that the KDED plugins are not
> > being loaded properly? I can not tell.
> You can check that using "qdbus org.kde.kded5 /kded
> org.kde.kded5.loadedModules", make sure it contains networkmanagement
>  
> > How can I see Qt logger messages? If I can enable & see them, I might be
> > able to see what is going on.
> 
> Using journalctl. Also you can use
> https://invent.kde.org/utilities/kdebugsettings to control what gets logged

When the ProxyType workaround is not applied, qdbus just gets stuck totally and shows nothing
Comment 17 Kai Uwe Broulik 2022-04-29 13:00:43 UTC
On my system I also noticed apps getting stuck, I then found that kded5 was in a deadlock.

I had the geolocation observer try to update the location (for nightcolor), which then did a TransferJob, which in turn used KIO, which would then do the proxy stuff. It then called into ProxyScout, ending up in itself (since kded called to kded), it then called KProtocolManager::proxyType(), which deadlocked trying to acquire a mutex, see backtrace:

Disabling either network proxy config or geolocatoin kded modules in systemsettings removed the freeze but obviously that's not a fix.

#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007f6e74dce7a5 in QtLinuxFutex::_q_futex(int*, int, int, unsigned long long, int*, int)
    (val3=0, addr2=0x0, val2=0, val=3, op=0, addr=0x7f6e6b921340 <(anonymous namespace)::Q_QGS_kProtocolManagerPrivate::innerFunction()::holder>) at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/thread/qfutex_p.h:133
#2  QtLinuxFutex::futexWait<QBasicAtomicPointer<QMutexData> >(QBasicAtomicPointer<QMutexData>&, QBasicAtomicPointer<QMutexData>::Type)
    (expectedValue=0x3, futex=...) at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/thread/qfutex_p.h:135
#3  lockInternal_helper<false> (timeout=-1, elapsedTimer=0x0, d_ptr=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/thread/qmutex_linux.cpp:142
#4  QBasicMutex::lockInternal() (this=0x7f6e6b921340 <(anonymous namespace)::Q_QGS_kProtocolManagerPrivate::innerFunction()::holder>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/thread/qmutex_linux.cpp:159
#5  0x00007f6e74dce99e in QMutex::lock()
    (this=this@entry=0x7f6e6b921340 <(anonymous namespace)::Q_QGS_kProtocolManagerPrivate::innerFunction()::holder>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/thread/qmutex.cpp:237
#6  0x00007f6e6b86cd84 in QMutexLocker::QMutexLocker(QBasicMutex*) (m=<optimized out>, this=<optimized out>)
    at /home/kaiuwe/kde/qt5/include/QtCore/qmutex.h:238
#7  KProtocolManager::proxyType() () at /home/kaiuwe/kde/src/kio/src/core/kprotocolmanager.cpp:379
#8  0x00007f6e6861aedf in KPAC::ProxyScout::startDownload() (this=0x55b7c7ee5bd0) at /home/kaiuwe/kde/src/kio/src/kpac/proxyscout.cpp:180
#9  0x00007f6e6861c2e8 in KPAC::ProxyScout::proxiesForUrl(QString const&, QDBusMessage const&)
    (this=this@entry=0x55b7c7ee5bd0, checkUrl=..., msg=...) at /home/kaiuwe/kde/qt5/include/QtCore/qstringlist.h:116
#10 0x00007f6e6861a1f0 in KPAC::ProxyScout::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=_o@entry=0x55b7c7ee5bd0, _id=_id@entry=1, _a=_a@entry=0x7ffed342dfc0, _c=QMetaObject::InvokeMetaMethod)
    at /home/kaiuwe/kde/build/kio/src/kpac/kded_proxyscout_autogen/EWIEGA46WW/moc_proxyscout.cpp:108
#11 0x00007f6e6861a631 in KPAC::ProxyScout::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_a=0x7ffed342dfc0, _id=1, _c=QMetaObject::InvokeMetaMethod, _o=0x55b7c7ee5bd0)
    at /home/kaiuwe/kde/build/kio/src/kpac/kded_proxyscout_autogen/EWIEGA46WW/moc_proxyscout.cpp:168
#12 KPAC::ProxyScout::qt_metacall(QMetaObject::Call, int, void**)
    (this=0x55b7c7ee5bd0, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7ffed342dfc0)
    at /home/kaiuwe/kde/build/kio/src/kpac/kded_proxyscout_autogen/EWIEGA46WW/moc_proxyscout.cpp:168
#13 0x00007f6e753ab54b in QDBusConnectionPrivate::deliverCall(QObject*, int, QDBusMessage const&, QVector<int> const&, int)
    (this=<optimized out>, object=<optimized out>, msg=..., metaTypes=..., slotIdx=<optimized out>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:1001
#14 0x00007f6e753b09d7 in QDBusConnectionPrivate::activateCall(QObject*, int, QDBusMessage const&)
    (this=this@entry=0x7f6e64003a00, object=0x55b7c7ee5bd0, flags=241, msg=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:904
#15 0x00007f6e753b10ff in QDBusConnectionPrivate::activateCall(QObject*, int, QDBusMessage const&)
    (msg=..., flags=<optimized out>, object=<optimized out>, this=0x7f6e64003a00)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:853
--Type <RET> for more, q to quit, c to continue without paging--
#16 QDBusConnectionPrivate::activateObject(QDBusConnectionPrivate::ObjectTreeNode&, QDBusMessage const&, int)
    (pathStartPos=<optimized out>, msg=..., node=..., this=0x7f6e64003a00)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:1521
#17 QDBusConnectionPrivate::activateObject(QDBusConnectionPrivate::ObjectTreeNode&, QDBusMessage const&, int)
    (this=0x7f6e64003a00, node=..., msg=..., pathStartPos=<optimized out>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:1447
#18 0x00007f6e753b1a80 in QDBusConnectionPrivate::handleObjectCall(QDBusMessage const&) (this=this@entry=0x7f6e64003a00, msg=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:1596
#19 0x00007f6e753b1cca in QDBusConnectionPrivate::handleMessage(QDBusMessage const&) (amsg=..., this=0x7f6e64003a00)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:579
#20 QDBusConnectionPrivate::handleMessage(QDBusMessage const&) (this=0x7f6e64003a00, amsg=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:537
#21 0x00007f6e753b269d in QDBusConnectionPrivate::sendWithReplyLocal(QDBusMessage const&) (this=this@entry=0x7f6e64003a00, message=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:2099
#22 0x00007f6e753b2fae in QDBusConnectionPrivate::sendWithReplyAsync(QDBusMessage const&, QObject*, char const*, char const*, int)
    (this=this@entry=0x7f6e64003a00, message=..., receiver=receiver@entry=0x0, returnMethod=returnMethod@entry=0x0, errorMethod=errorMethod@entry=0x0, timeout=timeout@entry=-1) at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:2135
#23 0x00007f6e753b412d in QDBusConnectionPrivate::sendWithReply(QDBusMessage const&, int, int)
    (this=0x7f6e64003a00, message=..., sendMode=1, timeout=-1) at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusintegrator.cpp:2068
#24 0x00007f6e7539fa3b in QDBusConnection::call(QDBusMessage const&, QDBus::CallMode, int) const
    (this=this@entry=0x55b7c80a7038, message=..., mode=mode@entry=QDBus::Block, timeout=<optimized out>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusconnection.cpp:680
#25 0x00007f6e753be592 in QDBusAbstractInterface::callWithArgumentList(QDBus::CallMode, QString const&, QList<QVariant> const&)
    (this=this@entry=0x7ffed342e990, mode=QDBus::Block, mode@entry=QDBus::AutoDetect, method=..., args=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusabstractinterface.cpp:494
#26 0x00007f6e753bf0ca in QDBusAbstractInterface::doCall(QDBus::CallMode, QString const&, QVariant const*, unsigned long)
    (this=this@entry=0x7ffed342e990, mode=mode@entry=QDBus::AutoDetect, method=..., args=args@entry=0x7ffed342e9e0, numArgs=numArgs@entry=1)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbusabstractinterface.cpp:921
#27 0x00007f6e6b8704e3 in QDBusAbstractInterface::call<QString>(QString const&, QString&&) (method=..., this=0x7ffed342e990)
    at /home/kaiuwe/kde/qt5/include/QtDBus/qdbusabstractinterface.h:108
#28 KProtocolManager::proxiesForUrl(QUrl const&) (url=...) at /home/kaiuwe/kde/src/kio/src/core/kprotocolmanager.cpp:565
#29 0x00007f6e6b870e0f in KProtocolManager::slaveProtocol(QUrl const&, QStringList&) (url=..., proxyList=...)
    at /home/kaiuwe/kde/src/kio/src/core/kprotocolmanager.cpp:666
#30 0x00007f6e6b85ac71 in KIO::SchedulerPrivate::doJob(KIO::SimpleJob*) (this=0x55b7c80ce1a0, job=0x55b7c80c2030)
    at /home/kaiuwe/kde/src/kio/src/core/scheduler.cpp:922
#31 0x00007f6e6b84187c in KIO::SimpleJobPrivate::simpleJobInit() (this=0x55b7c803ad50) at /home/kaiuwe/kde/src/kio/src/core/simplejob.cpp:37
#32 0x00007f6e6b84f926 in KIO::TransferJob::TransferJob(KIO::TransferJobPrivate&) (this=0x55b7c80c2030, dd=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at /home/kaiuwe/kde/src/kio/src/core/transferjob.cpp:19
#33 0x00007f6e6b84be1e in KIO::TransferJobPrivate::newJob(QUrl const&, int, QByteArray const&, QByteArray const&, QFlags<KIO::JobFlag>)
    (flags=..., _staticData=..., packedArgs=..., command=77, url=...) at /home/kaiuwe/kde/qt5/include/QtCore/qsharedpointer_impl.h:565
#34 KIO::http_post(QUrl const&, QByteArray const&, QFlags<KIO::JobFlag>) (url=..., postData=..., flags=flags@entry=...)
    at /home/kaiuwe/kde/src/kio/src/core/storedtransferjob.cpp:342
#35 0x00007f6e60456781 in Ip::update() (this=0x55b7c800ba10) at /home/kaiuwe/kde/qt5/include/QtCore/qchar.h:102
#36 0x00007f6e6046ad72 in GeolocationProvider::requestUpdate(QFlags<GeolocationProvider::UpdateTrigger>) (this=<optimized out>, triggers=...,
    triggers@entry=...) at /home/kaiuwe/kde/src/plasma-workspace/dataengines/geolocation/geolocationprovider.cpp:46
#37 0x00007f6e60479f06 in Geolocation::updatePlugins(QFlags<GeolocationProvider::UpdateTrigger>)
    (this=this@entry=0x55b7c7ff99f0, triggers=triggers@entry=...)
    at /home/kaiuwe/kde/src/plasma-workspace/dataengines/geolocation/geolocation.cpp:77
#38 0x00007f6e6047a0ca in Geolocation::sourceRequestEvent(QString const&) (this=0x55b7c7ff99f0, name=...)
    at /home/kaiuwe/kde/qt5/include/QtCore/qflags.h:121
#39 0x00007f6e605a1609 in Plasma::DataEnginePrivate::requestSource(QString const&, bool*)
    (newSource=0x7ffed342efaf, sourceName=..., this=0x55b7c8011bc0) at /home/kaiuwe/kde/src/plasma-framework/src/plasma/dataengine.cpp:579
#40 Plasma::DataEnginePrivate::requestSource(QString const&, bool*) (this=0x55b7c8011bc0, sourceName=..., newSource=0x7ffed342efaf)
    at /home/kaiuwe/kde/src/plasma-framework/src/plasma/dataengine.cpp:564
#41 0x00007f6e605a1e0c in Plasma::DataEngine::connectSource(QString const&, QObject*, unsigned int, Plasma::Types::IntervalAlignment) const
    (this=0x55b7c7ff99f0, source=..., visualization=visualization@entry=0x55b7c7f6f4b0, pollingInterval=pollingInterval@entry=0, intervalAlignment=intervalAlignment@entry=Plasma::Types::NoAlignment) at /home/kaiuwe/kde/src/plasma-framework/src/plasma/dataengine.cpp:112
#42 0x00007f6e606255d8 in ColorCorrect::Geolocator::Geolocator(QObject*) (this=0x55b7c7f6f4b0, parent=<optimized out>)
    at /home/kaiuwe/kde/qt5/include/QtCore/qstring.h:967
#43 0x00007f6e68005c85 in LocationUpdater::resetLocator() (this=0x55b7c7f551f0)
    at /home/kaiuwe/kde/src/plasma-workspace/libcolorcorrect/kded/locationupdater.cpp:32
#44 0x00007f6e74ff9b5e in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffed342f170, r=0x55b7c7f551f0, this=0x55b7c7f68250)
    at ../../include/QtCore/../../../../../src/Qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#45 doActivate<false>(QObject*, int, void**) (sender=0x55b7c7f5f210, signal_index=5, argv=0x7ffed342f170)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#46 0x00007f6e74ff2f27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=sender@entry=0x55b7c7f5f210, m=m@entry=0x7f6e6062cce0 <ColorCorrect::CompositorAdaptor::staticMetaObject>, local_signal_index=local_signal_index@entry=2, argv=argv@entry=0x0) at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qobject.cpp:3946
#47 0x00007f6e6061aff7 in ColorCorrect::CompositorAdaptor::runningChanged() (this=this@entry=0x55b7c7f5f210)
    at /home/kaiuwe/kde/build/plasma-workspace/libcolorcorrect/colorcorrect_autogen/EWIEGA46WW/moc_compositorcoloradaptor.cpp:260
#48 0x00007f6e6061ea8b in ColorCorrect::CompositorAdaptor::updateProperties(QMap<QString, QVariant> const&)
    (this=this@entry=0x55b7c7f5f210, properties=...) at /home/kaiuwe/kde/src/plasma-workspace/libcolorcorrect/compositorcoloradaptor.cpp:93
#49 0x00007f6e6061f196 in ColorCorrect::CompositorAdaptor::<lambda(QDBusPendingCallWatcher*)>::operator()
    (__closure=<optimized out>, self=<optimized out>) at /home/kaiuwe/kde/qt5/include/QtCore/qvariant.h:877
--Type <RET> for more, q to quit, c to continue without paging--
#50 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<QDBusPendingCallWatcher*>, void, ColorCorrect::CompositorAdaptor::CompositorAdaptor(QObject*)::<lambda(QDBusPendingCallWatcher*)> >::call (arg=<optimized out>, f=...)
    at /home/kaiuwe/kde/qt5/include/QtCore/qobjectdefs_impl.h:146
#51 QtPrivate::Functor<ColorCorrect::CompositorAdaptor::CompositorAdaptor(QObject*)::<lambda(QDBusPendingCallWatcher*)>, 1>::call<QtPrivate::List<QDBusPendingCallWatcher*>, void> (arg=<optimized out>, f=...) at /home/kaiuwe/kde/qt5/include/QtCore/qobjectdefs_impl.h:256
#52 QtPrivate::QFunctorSlotObject<ColorCorrect::CompositorAdaptor::CompositorAdaptor(QObject*)::<lambda(QDBusPendingCallWatcher*)>, 1, QtPrivate::List<QDBusPendingCallWatcher*>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *)
    (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /home/kaiuwe/kde/qt5/include/QtCore/qobjectdefs_impl.h:443
#53 0x00007f6e74ff9b5e in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffed342f400, r=0x55b7c7f5f210, this=0x55b7c7f5e8a0)
    at ../../include/QtCore/../../../../../src/Qt5/qtbase/src/corelib/kernel/qobjectdefs_impl.h:398
#54 doActivate<false>(QObject*, int, void**) (sender=0x55b7c7f4d590, signal_index=3, argv=0x7ffed342f400)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qobject.cpp:3886
#55 0x00007f6e74ff2f27 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    (sender=<optimized out>, m=m@entry=0x7f6e754215c0 <QDBusPendingCallWatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffed342f400) at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qobject.cpp:3946
#56 0x00007f6e754020e3 in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) (this=<optimized out>, _t1=<optimized out>)
    at .moc/moc_qdbuspendingcall.cpp:158
#57 0x00007f6e754021e8 in QDBusPendingCallWatcherPrivate::_q_finished() (this=<optimized out>)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/dbus/qdbuspendingcall.cpp:494
#58 QDBusPendingCallWatcher::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qdbuspendingcall.cpp:86
#59 0x00007f6e74ff06b9 in QObject::event(QEvent*) (this=0x55b7c7f4d590, e=0x55b7c7d857e0)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qobject.cpp:1314
#60 0x00007f6e75de7dc3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=
    0x55b7c7c436a0, receiver=receiver@entry=0x55b7c7f4d590, e=e@entry=0x55b7c7d857e0)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/widgets/kernel/qapplication.cpp:3637
#61 0x00007f6e75df0bd8 in QApplication::notify(QObject*, QEvent*) (this=0x7ffed342faa0, receiver=0x55b7c7f4d590, e=0x55b7c7d857e0)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/widgets/kernel/qapplication.cpp:3161
#62 0x00007f6e74fc2ada in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55b7c7f4d590, event=0x55b7c7d857e0)
    at ../../include/QtCore/5.15.3/QtCore/private/../../../../../../../../src/Qt5/qtbase/src/corelib/thread/qthread_p.h:332
#63 0x00007f6e74fc53e1 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
    (receiver=0x0, event_type=0, data=0x55b7c7c43810) at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qcoreapplication.cpp:1821
#64 0x00007f6e7501dd47 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x55b7c7d89190)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:277
#65 0x00007f6e73c3f17d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#66 0x00007f6e73c3f400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#67 0x00007f6e73c3f4a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#68 0x00007f6e7501d3a2 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x55b7c7d8e570, flags=...)
    at /home/kaiuwe/kde/src/Qt5/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:423
#69 0x00007f6e74fc15db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffed342f9d0, flags=..., flags@entry=...)
    at ../../include/QtCore/../../../../../src/Qt5/qtbase/src/corelib/global/qflags.h:141
#70 0x00007f6e74fc9784 in QCoreApplication::exec() () at ../../include/QtCore/../../../../../src/Qt5/qtbase/src/corelib/global/qflags.h:121
#71 0x000055b7c739cb97 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/kaiuwe/kde/src/kded/src/kded.cpp:769
Comment 18 Daniel Albers 2022-08-12 23:08:59 UTC
(In reply to Kai Uwe Broulik from comment #17)
> On my system I also noticed apps getting stuck, I then found that kded5 was
> in a deadlock.
> 
> I had the geolocation observer try to update the location (for nightcolor),
> which then did a TransferJob, which in turn used KIO, which would then do
> the proxy stuff. It then called into ProxyScout, ending up in itself (since
> kded called to kded), it then called KProtocolManager::proxyType(), which
> deadlocked trying to acquire a mutex, see backtrace:
> 
> Disabling either network proxy config or geolocatoin kded modules in
> systemsettings removed the freeze but obviously that's not a fix.

+1, exact same behavior on kio 5.96.0, plasma-workspace-5.25.4.
Comment 19 Daniel Albers 2022-08-12 23:38:32 UTC
*** Bug 419213 has been marked as a duplicate of this bug. ***
Comment 20 Bug Janitor Service 2022-08-15 16:45:59 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2015
Comment 21 Nicolas Fella 2022-09-11 23:30:09 UTC
Git commit 98cadd48c21c89b81fdeb3499a557a6551a09d8a by Nicolas Fella.
Committed on 11/09/2022 at 23:21.
Pushed by nicolasfella into branch 'master'.

[dataengines/geolocation] Port from KIO::http_post to QNetworkAccessManager

Not only does this slightly simplify the code, it also avoids a deadlock in kded when automatic proxy detection is enabled
Related: bug 457341

M  +1    -1    dataengines/geolocation/CMakeLists.txt
M  +34   -50   dataengines/geolocation/location_ip.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/98cadd48c21c89b81fdeb3499a557a6551a09d8a
Comment 22 Nicolas Fella 2022-10-11 15:45:25 UTC
*** Bug 460228 has been marked as a duplicate of this bug. ***
Comment 23 Nicolas Fella 2022-10-11 15:47:31 UTC
Git commit d693026676cc6bf2b7c23e9ff4b620679cf15d10 by Nicolas Fella.
Committed on 11/10/2022 at 15:46.
Pushed by nicolasfella into branch 'Plasma/5.24'.

[dataengines/geolocation] Port from KIO::http_post to QNetworkAccessManager

Not only does this slightly simplify the code, it also avoids a deadlock in kded when automatic proxy detection is enabled
Related: bug 457341
(cherry picked from commit 98cadd48c21c89b81fdeb3499a557a6551a09d8a)

M  +1    -1    dataengines/geolocation/CMakeLists.txt
M  +34   -50   dataengines/geolocation/location_ip.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/d693026676cc6bf2b7c23e9ff4b620679cf15d10