Bug 493519

Summary: chargethresholdhelper crashed in ChargeThresholdHelper::getthreshold with Plasma 6.1.90
Product: [Plasma] Powerdevil Reporter: Matt Fagnani <matt.fagnani>
Component: generalAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: geraldo.simiao.kutz, natalie_clarius, nate, notmart
Priority: NOR Keywords: regression
Version: 6.1.90   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 6.2.0
Sentry Crash Report:

Description Matt Fagnani 2024-09-23 04:48:05 UTC
SUMMARY

I booted the Fedora Rawhide KDE live image Fedora-KDE-Live-x86_64-Rawhide-20240922.n.0.iso in a QEMU/KVM VM in GNOME Boxes in a Fedora 41 KDE installation. Plasma 6.1.90 on Wayland started. chargethresholdhelper crashed twice in ChargeThresholdHelper::getthreshold during Plasma startup when it was run automatically by dbus-:1.3-org.kde.powerdevil.chargethresholdhelper@0.service. 

Core was generated by `/usr/libexec/kf6/kauth/chargethresholdhelper'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055c549d06abe in ChargeThresholdHelper::getthreshold (this=<optimized out>, args=...)
    at /usr/src/debug/powerdevil-6.1.90-1.fc42.x86_64/daemon/chargethresholdhelper_linux.cpp:132
132         const int stopThreshold = *stopThresholdIt;
[Current thread is 1 (Thread 0x7f8117cc3980 (LWP 2469))]

(gdb) bt
#0  0x000055c549d06abe in ChargeThresholdHelper::getthreshold (this=<optimized out>, args=...)
    at /usr/src/debug/powerdevil-6.1.90-1.fc42.x86_64/daemon/chargethresholdhelper_linux.cpp:132
#1  ChargeThresholdHelper::qt_static_metacall (_o=<optimized out>, _id=<optimized out>, _a=0x7ffffe4ded00, _c=<optimized out>)
    at /usr/src/debug/powerdevil-6.1.90-1.fc42.x86_64/redhat-linux-build/daemon/chargethresholdhelper_autogen/include/moc_chargethresholdhelper.cpp:111
#2  0x00007f81176fd8f1 in QMetaMethodInvoker::invokeImpl (self=..., target=0x55c56f2ae600, connectionType=connectionType@entry=Qt::DirectConnection,
    paramCount=paramCount@entry=2, parameters=parameters@entry=0x7ffffe4ded00, typeNames=0x7ffffe4ded10, metaTypes=0x7ffffe4ded20)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qmetaobject.cpp:2754
#3  0x00007f81176fe3f1 in QMetaMethod::invokeImpl (self=..., target=<optimized out>, connectionType=connectionType@entry=Qt::DirectConnection,
    paramCount=paramCount@entry=2, parameters=parameters@entry=0x7ffffe4ded00, typeNames=0x7ffffe4ded10, metaTypes=0x7ffffe4ded20)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qmetaobject.cpp:2592
#4  0x00007f8105090f4a in QMetaMethod::invoke<KAuth::ActionReply, QMetaMethodArgument> (c=<optimized out>, this=<optimized out>, obj=<optimized out>, r=...)
    at /usr/include/qt6/QtCore/qmetaobject.h:148
#5  KAuth::DBusHelperProxy::performAction (this=<optimized out>, action=..., details=..., arguments=..., fdArguments=..., callerID=...)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/src/backends/dbus/DBusHelperProxy.cpp:283
#6  0x00007f8105091e06 in Kf6authAdaptor::performAction (callerID=..., this=0x55c56f2b2800, action=..., details=..., arguments=..., fdArguments=...)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/redhat-linux-build/src/kf6authadaptor.cpp:39
#7  Kf6authAdaptor::qt_static_metacall (_o=_o@entry=0x55c56f2b2800, _id=_id@entry=1, _a=_a@entry=0x7ffffe4def88, _c=<optimized out>)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/redhat-linux-build/src/moc_kf6authadaptor.cpp:145
#8  0x00007f8105092220 in Kf6authAdaptor::qt_static_metacall (_o=0x55c56f2b2800, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7ffffe4def88)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/redhat-linux-build/src/moc_kf6authadaptor.cpp:138
#9  Kf6authAdaptor::qt_metacall (this=0x55c56f2b2800, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7ffffe4def88)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/redhat-linux-build/src/moc_kf6authadaptor.cpp:182
#10 0x00007f8116f6b421 in QDBusConnectionPrivate::deliverCall (this=this@entry=0x7f8100009250, object=object@entry=0x55c56f2b2800, msg=..., metaTypes=..., slotIdx=5)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/dbus/qdbusintegrator.cpp:1007
#11 0x00007f8116f6ec48 in QDBusConnectionPrivate::activateCall (this=this@entry=0x7f8100009250, object=0x55c56f2b2800, flags=..., flags@entry=..., msg=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/dbus/qdbusintegrator.cpp:909
#12 0x00007f8116f6f341 in QDBusConnectionPrivate::activateObject (this=0x7f8100009250, node=..., msg=..., pathStartPos=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/dbus/qdbusintegrator.cpp:1484
#13 0x00007f8116f7226a in QDBusActivateObjectEvent::placeMetaCall (this=0x7f810000ece0)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/dbus/qdbusintegrator.cpp:1604
--Type <RET> for more, q to quit, c to continue without paging--c
#14 0x00007f811773dd4b in QObject::event (this=0x55c56f2f3b30, e=0x7f810000ece0) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qobject.cpp:1452
#15 0x00007f81176e6de9 in doNotify (receiver=0x55c56f2f3b30, event=0x7f810000ece0)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1243
#16 QCoreApplication::notify (this=<optimized out>, receiver=0x55c56f2f3b30, event=0x7f810000ece0)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1226
#17 QCoreApplication::notifyInternal2 (receiver=0x55c56f2f3b30, event=0x7f810000ece0)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1142
#18 0x00007f81176e706d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1583
#19 0x00007f81176eabd1 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x55c56f2ae6a0)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1940
#20 0x00007f81176eae7d in QCoreApplication::sendPostedEvents (receiver=<optimized out>, event_type=<optimized out>)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qcoreapplication.cpp:1797
#21 0x00007f81179d586f in postEventSourceDispatch (s=0x55c56f2afee0) at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:244
#22 0x00007f81168f660c in g_main_context_dispatch_unlocked.lto_priv () from /lib64/libglib-2.0.so.0
#23 0x00007f8116956b78 in g_main_context_iterate_unlocked.isra () from /lib64/libglib-2.0.so.0
#24 0x00007f81168f7b03 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#25 0x00007f81179d5023 in QEventDispatcherGlib::processEvents (this=0x55c56f2afb60, flags=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#26 0x00007f81176f3b43 in QEventLoop::exec (this=this@entry=0x7ffffe4df820, flags=..., flags@entry=...)
    at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/global/qflags.h:34
#27 0x00007f81176ef9fc in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.7.2-6.fc42.x86_64/src/corelib/global/qflags.h:74
#28 0x00007f8117df89e4 in KAuth::HelperSupport::helperMain (argc=<optimized out>, argv=<optimized out>, id=<optimized out>, responder=<optimized out>)
    at /usr/src/debug/kf6-kauth-6.6.0-1.fc42.x86_64/src/helpersupport.cpp:101
#29 0x00007f81170121c8 in __libc_start_call_main () from /lib64/libc.so.6
#30 0x00007f811701228b in __libc_start_main_impl () from /lib64/libc.so.6
#31 0x000055c549d03d85 in _start ()

The pointers stopThresholdIt and stopThresholds in ChargeThresholdHelper::getthreshold looked invalid.

(gdb) p *stopThresholdIt
Attempt to take address of value not located in memory.
(gdb) p stopThresholdIt
$2 = <optimized out>

(gdb) p stopThresholds
$1 = {d = {d = 0x55c56f2fadd0}}
(gdb) p *stopThresholds
Attempt to take address of value not located in memory.

chargethresholdhelper crashed with the same trace when I selected Power Management in System Settings. This problem happened on 4/4 boots with this image in VMs and on bare metal. I didn't see this problem with Plasma 6.1.5 or earlier.

STEPS TO REPRODUCE
1. Boot a Fedora 41 KDE installation
2. Log in to Plasma 6.1.5 on Wayland
3. Download the Fedora Rawhide KDE live image Fedora-KDE-Live-x86_64-Rawhide-20240922.n.0.iso from https://koji.fedoraproject.org/koji/buildinfo?buildID=2550880
4. Install GNOME Boxes if it isn't already with sudo dnf install gnome-boxes
5. Start GNOME Boxes
6. Boot Fedora-KDE-Live-x86_64-Rawhide-20240922.n.0.iso in a QEMU/KVM VM in GNOME Boxes

OBSERVED RESULT
chargethresholdhelper crashed in ChargeThresholdHelper::getthreshold with Plasma 6.1.90

EXPECTED RESULT
chargethresholdhelper shouldn't have crashed

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Fedora Rawhide/42
KDE Plasma Version: 6.1.90
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.2

ADDITIONAL INFORMATION
Comment 2 Natalie Clarius 2024-09-23 18:44:54 UTC
That's weird, we have a check in place to ensure that a threshold does exist so I currently don't see how it can reach that point without having a value.
Comment 3 Marco Martin 2024-09-24 09:14:03 UTC
does thins happen only when running on a VM?
Comment 4 Matt Fagnani 2024-09-24 16:44:18 UTC
I've seen this problem on bare metal as well as I mentioned. The threshold might have been set but the pointer stopThresholdIt might've been corrupted or pointed to an inaccessible address. I looked at a few of the reports in the search of Nate in comment 1, but I didn't see ChargeThresholdHelper::getthreshold in their comments. When I searched for ChargeThresholdHelper::getthreshold nothing was found a couple days ago. Thanks.
Comment 5 Geraldo Simião 2024-09-24 19:54:09 UTC
Same is happening with my baremetal installation after upgrade to 6.1.90

Operating System: Fedora Linux 41
KDE Plasma Version: 6.1.90
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.2
Kernel Version: 6.11.0-63.fc41.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 8 × Intel® Core™ i7-3632QM CPU @ 2.20GHz
Memory: 15.4 GiB of RAM
Graphics Processor: Mesa Intel® HD Graphics 4000

              PID: 11525 (chargethreshold)
             UID: 0 (root)
             GID: 0 (root)
         Signal: 11 (SEGV)
Timestamp: Tue 2024-09-24 15:08:55 -03 (1h 39min ago)
Command Line: /usr/libexec/kf6/kauth/chargethresholdhelper
        Executable: /usr/libexec/kf6/kauth/chargethresholdhelper
 Control Group: /system.slice/system-dbus\x2d:1.3\x2dorg.kde.powerdevil.chargethresholdhelper.slice/dbus-:1.3-org.kde.powerdevil.chargethresholdhelper@2.service
                  Unit: dbus-:1.3-org.kde.powerdevil.chargethresholdhelper@2.service
                Slice: system-dbus\x2d:1.3\x2dorg.kde.powerdevil.chargethresholdhelper.slice
           Boot ID: 931fd089568a4c32bc0472cfb558d9ff
    Machine ID: 9fca7b934b0640838ecb94b41675382e
      Hostname: rivotril
       Storage: /var/lib/systemd/coredump/core.chargethreshold.0.931fd089568a4c32bc0472cfb558d9ff.11525.1727201335000000.zst (inaccessible)
       Package: powerdevil/6.1.90-1.fc41
      build-id: e859affc2d5d3f7877dfc2856270e08b6faf1bd6
       Message: Process 11525 (chargethreshold) of user 0 dumped core.
               
                Module kauth_helper_plugin.so from rpm kf6-kauth-6.6.0-1.fc41.x86_64
                Module libbrotlicommon.so.1 from rpm brotli-1.1.0-5.fc41.x86_64
                Module liblzma.so.5 from rpm xz-5.6.2-2.fc41.x86_64
                Module libblkid.so.1 from rpm util-linux-2.40.2-4.fc41.x86_64
                Module libbrotlidec.so.1 from rpm brotli-1.1.0-5.fc41.x86_64
                Module libbz2.so.1 from rpm bzip2-1.0.8-19.fc41.x86_64
                Module libgraphite2.so.3 from rpm graphite2-1.3.14-16.fc41.x86_64
                Module libXext.so.6 from rpm libXext-1.3.6-2.fc41.x86_64
                Module libxml2.so.2 from rpm libxml2-2.12.8-2.fc41.x86_64
                Module libGLdispatch.so.0 from rpm libglvnd-1.7.0-5.fc41.x86_64
                Module libXau.so.6 from rpm libXau-1.0.11-7.fc41.x86_64
                Module libffi.so.8 from rpm libffi-3.4.6-3.fc41.x86_64
                Module libselinux.so.1 from rpm libselinux-3.7-5.fc41.x86_64
                Module libmount.so.1 from rpm util-linux-2.40.2-4.fc41.x86_64
                Module libgmodule-2.0.so.0 from rpm glib2-2.82.0-1.fc41.x86_64
                Module libfreetype.so.6 from rpm freetype-2.13.2-6.fc41.x86_64
                Module libharfbuzz.so.0 from rpm harfbuzz-9.0.0-3.fc41.x86_64
                Module libpng16.so.16 from rpm libpng-1.6.40-4.fc41.x86_64
                Module libOpenGL.so.0 from rpm libglvnd-1.7.0-5.fc41.x86_64
                Module libGLX.so.0 from rpm libglvnd-1.7.0-5.fc41.x86_64
                Module libxkbcommon.so.0 from rpm libxkbcommon-1.7.0-4.fc41.x86_64
                Module libfontconfig.so.1 from rpm fontconfig-2.15.0-8.fc41.x86_64
                Module libEGL.so.1 from rpm libglvnd-1.7.0-5.fc41.x86_64
                Module libxcb-keysyms.so.1 from rpm xcb-util-keysyms-0.4.1-6.fc41.x86_64
                Module libXfixes.so.3 from rpm libXfixes-6.0.1-4.fc41.x86_64
                Module libxcb-res.so.0 from rpm libxcb-1.17.0-2.fc41.x86_64
                Module libxcb.so.1 from rpm libxcb-1.17.0-2.fc41.x86_64
                Module libX11.so.6 from rpm libX11-1.8.10-2.fc41.x86_64
                Module libgobject-2.0.so.0 from rpm glib2-2.82.0-1.fc41.x86_64
                Module libgio-2.0.so.0 from rpm glib2-2.82.0-1.fc41.x86_64
                Module libpolkit-gobject-1.so.0 from rpm polkit-125-1.fc41.x86_64
                Module libQt6Gui.so.6 from rpm qt6-qtbase-6.7.2-6.fc41.x86_64
                Module libKF6WindowSystem.so.6 from rpm kf6-kwindowsystem-6.6.0-1.fc41.x86_64
                Module libpolkit-qt6-core-1.so.1 from rpm polkit-qt-1-0.200.0-2.fc41.x86_64
                Module kauth_backend_plugin.so from rpm kf6-kauth-6.6.0-1.fc41.x86_64
                Module libdbus-1.so.3 from rpm dbus-1.14.10-4.fc41.x86_64
                Module libcap.so.2 from rpm libcap-2.70-4.fc41.x86_64
                Module libpcre2-8.so.0 from rpm pcre2-10.44-1.fc41.1.x86_64
                Module libicudata.so.74 from rpm icu-74.2-2.fc41.x86_64
                Module libudev.so.1 from rpm systemd-256.6-1.fc41.x86_64
                Module libQt6DBus.so.6 from rpm qt6-qtbase-6.7.2-6.fc41.x86_64
                Module libcrypto.so.3 from rpm openssl-3.2.2-7.fc41.x86_64
                Module libpcre2-16.so.0 from rpm pcre2-10.44-1.fc41.1.x86_64
                Module libb2.so.1 from rpm libb2-0.98.1-12.fc41.x86_64
                Module libdouble-conversion.so.3 from rpm double-conversion-3.3.0-4.fc41.x86_64
                Module libsystemd.so.0 from rpm systemd-256.6-1.fc41.x86_64
                Module libz.so.1 from rpm zlib-ng-2.1.7-3.fc41.x86_64
                Module libglib-2.0.so.0 from rpm glib2-2.82.0-1.fc41.x86_64
                Module libzstd.so.1 from rpm zstd-1.5.6-2.fc41.x86_64
                Module libicuuc.so.74 from rpm icu-74.2-2.fc41.x86_64
                Module libicui18n.so.74 from rpm icu-74.2-2.fc41.x86_64
                Module libKF6CoreAddons.so.6 from rpm kf6-kcoreaddons-6.6.0-1.fc41.x86_64
                Module libQt6Core.so.6 from rpm qt6-qtbase-6.7.2-6.fc41.x86_64
                Module libKF6AuthCore.so.6 from rpm kf6-kauth-6.6.0-1.fc41.x86_64
                Module chargethresholdhelper from rpm powerdevil-6.1.90-1.fc41.x86_64
Comment 6 Geraldo Simião 2024-09-24 20:08:37 UTC
here's the backtrace:


Reading symbols from /usr/libexec/kf6/kauth/chargethresholdhelper...

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.fedoraproject.org/>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Downloading separate debug info for /usr/libexec/kf6/kauth/chargethresholdhelper
Reading symbols from /home/geraldo/.cache/debuginfod_client/e859affc2d5d3f7877dfc2856270e08b6faf1bd6/debuginfo...                                        
Downloading separate debug info for /home/geraldo/.cache/debuginfod_client/e859affc2d5d3f7877dfc2856270e08b6faf1bd6/debuginfo
[New LWP 11525]                                                                                                                                          
[New LWP 11526]
[New LWP 11529]
[New LWP 11527]
[New LWP 11528]
Downloading separate debug info for /usr/lib64/qt6/plugins/kf6/kauth/backend/kauth_backend_plugin.so
Downloading separate debug info for /lib64/libpolkit-qt6-core-1.so.1                                                                                     
Downloading separate debug info for /home/geraldo/.cache/debuginfod_client/9a2c52a3b1296d2c3ce7a4016d6a751bc5cadc3e/debuginfo                            
Downloading separate debug info for /lib64/libpolkit-gobject-1.so.0                                                                                      
Downloading separate debug info for /home/geraldo/.cache/debuginfod_client/de1028c6983d448708912d59ea56c605123b608b/debuginfo                            
Downloading separate debug info for /usr/lib64/qt6/plugins/kf6/kauth/helper/kauth_helper_plugin.so                                                       
[Thread debugging using libthread_db enabled]                                                                                                            
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/libexec/kf6/kauth/chargethresholdhelper'.
Program terminated with signal SIGSEGV, Segmentation fault.
Downloading source file /usr/src/debug/powerdevil-6.1.90-1.fc41.x86_64/daemon/chargethresholdhelper_linux.cpp
#0  0x00005569ddec1abe in ChargeThresholdHelper::getthreshold (this=<optimized out>, args=...)                                                           
--Type <RET> for more, q to quit, c to continue without paging--
    at /usr/src/debug/powerdevil-6.1.90-1.fc41.x86_64/daemon/chargethresholdhelper_linux.cpp:132
132         const int stopThreshold = *stopThresholdIt;
[Current thread is 1 (Thread 0x7fbc28698980 (LWP 11525))]
(gdb)
Comment 7 Colin J Thomson 2024-09-24 20:18:54 UTC
Seeing the same here on this Fedora 40 box since updating to 6.2 beta (which has almost daily updates from the COPR I use)

Process 141228 (chargethreshold) of user 0 terminated abnormally without generating a coredump.

Operating System: Fedora Linux 40
KDE Plasma Version: 6.1.90
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.2
Kernel Version: 6.10.11-200.fc40.x86_64 (64-bit)
Graphics Platform: Wayland
Processors: 12 × AMD Ryzen 5 5600G with Radeon Graphics
Memory: 29.2 GiB of RAM
Comment 8 Bug Janitor Service 2024-09-24 21:17:40 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/powerdevil/-/merge_requests/429
Comment 9 Alessandro Astone 2024-09-24 21:24:35 UTC
Git commit 0b708921b543974650202600b9f01e4957d178de by Alessandro Astone.
Committed on 24/09/2024 at 21:16.
Pushed by aleasto into branch 'master'.

daemon: Do not compare const and non-const QMap iterator

This is supposed to be valid C++ 20 [1], and yet it fails comparison.

[1]: https://isocpp.org/files/papers/N4860.pdf,
     § 22.2.1 [container.requirements.general] p7

M  +1    -1    daemon/chargethresholdhelper_linux.cpp

https://invent.kde.org/plasma/powerdevil/-/commit/0b708921b543974650202600b9f01e4957d178de
Comment 10 Alessandro Astone 2024-09-24 21:26:25 UTC
Git commit 950ba15e9b38e4214a1877b8f035f999c1a0db89 by Alessandro Astone.
Committed on 24/09/2024 at 21:26.
Pushed by aleasto into branch 'Plasma/6.2'.

daemon: Do not compare const and non-const QMap iterator

This is supposed to be valid C++ 20 [1], and yet it fails comparison.

[1]: https://isocpp.org/files/papers/N4860.pdf,
     § 22.2.1 [container.requirements.general] p7
(cherry picked from commit 0b708921b543974650202600b9f01e4957d178de)

M  +1    -1    daemon/chargethresholdhelper_linux.cpp

https://invent.kde.org/plasma/powerdevil/-/commit/950ba15e9b38e4214a1877b8f035f999c1a0db89
Comment 11 Colin J Thomson 2024-09-25 17:06:23 UTC
Confirm fixed on this Fedora 40 box, thank you.