Bug 440223 - Power Profiles feature causes KCM to always get marked as dirty and crash on close if you discard the (nonexistent) changes
Summary: Power Profiles feature causes KCM to always get marked as dirty and crash on ...
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_powerdevil (other bugs)
Version First Reported In: unspecified
Platform: Other Linux
: VHI crash
Target Milestone: ---
Assignee: David Redondo
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2021-07-24 12:41 UTC by Nate Graham
Modified: 2021-07-28 13:47 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2021-07-24 12:41:22 UTC
With the recent power profile feature, now the KCM always gets marked as dirty when you open it, even though you have not made any changes. And when you leave, if you click "Discard" in the dialog box asking if yo want to save or discard your (nonexistent) changes, the containing app (e.g. System Settings) crashes. Here is the backtrace:

(gdb) bt
#0  0x00007ffff64f63ca in QComboBox::clear() () from /lib64/libQt5Widgets.so.5
#1  0x00007fff9570eb50 in operator() (__closure=0x15dc3b0, watcher=0x7fffffffce10)
    at /home/nate/kde/src/powerdevil/daemon/actions/bundled/powerprofileconfig.cpp:71
#2  0x00007ffff57a8c99 in void doActivate<false>(QObject*, int, void**) ()
   from /lib64/libQt5Core.so.5
#3  0x00007ffff5b74a53 in QDBusPendingCallWatcher::finished(QDBusPendingCallWatcher*) ()
   from /lib64/libQt5DBus.so.5
#4  0x00007ffff579f809 in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#5  0x00007ffff63e9423 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /lib64/libQt5Widgets.so.5
#6  0x00007ffff5775098 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /lib64/libQt5Core.so.5
#7  0x00007ffff5778606 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) ()
   from /lib64/libQt5Core.so.5
#8  0x00007ffff57c6bf7 in postEventSourceDispatch(_GSource*, int (*)(void*), void*) ()
   from /lib64/libQt5Core.so.5
#9  0x00007ffff3cef4cf in g_main_dispatch (context=0x7fffdc005000) at ../glib/gmain.c:3337
#10 g_main_context_dispatch (context=0x7fffdc005000) at ../glib/gmain.c:4055
#11 0x00007ffff3d434e8 in g_main_context_iterate.constprop.0 (
    context=context@entry=0x7fffdc005000, block=block@entry=1, dispatch=dispatch@entry=1, 
    self=<optimized out>) at ../glib/gmain.c:4131
#12 0x00007ffff3cecc03 in g_main_context_iteration (context=0x7fffdc005000, may_block=1)
    at ../glib/gmain.c:4196
#13 0x00007ffff57c6698 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#14 0x00007ffff5773ab2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /lib64/libQt5Core.so.5
#15 0x00007ffff577bfe4 in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#16 0x000000000040de1d in main (argc=<optimized out>, argv=0x7fffffffd4e0)
    at /home/nate/kde/src/systemsettings/app/main.cpp:208
Comment 1 Nate Graham 2021-07-24 12:44:19 UTC
David, can you take a look? Thanks!
Comment 2 David Edmundson 2021-07-26 11:08:31 UTC
Git commit 164f6175014313d18c13e129998c816303863ef1 by David Edmundson.
Committed on 26/07/2021 at 11:08.
Pushed by davidedmundson into branch 'master'.

Handle DBus call finishing before buildUI is called

Evidentally from the backtrace buildUI is not called in the same event
as load, and async DBus calls fan finish in between.

M  +14   -9    daemon/actions/bundled/powerprofileconfig.cpp
M  +1    -1    daemon/actions/bundled/powerprofileconfig.h

https://invent.kde.org/plasma/powerdevil/commit/164f6175014313d18c13e129998c816303863ef1