[solid] Clarify referencing of DeviceInterface
AbandonedPublic

Authored by anthonyfieroni on Dec 20 2019, 8:42 AM.

Details

Reviewers
broulik
bruns
Summary

DeviceInterface should be treated as weak object, also let he manages its backend.
Open Kinfocenter select energy tab, close kcm.

Test Plan

Apply patch, close kinfocenter in energy tab does not crash anymore.

Diff Detail

Repository
R245 Solid
Lint
Lint Skipped
Unit
Unit Tests Skipped
anthonyfieroni created this revision.Dec 20 2019, 8:42 AM
Restricted Application added a project: Frameworks. · View Herald TranscriptDec 20 2019, 8:42 AM
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald Transcript
anthonyfieroni requested review of this revision.Dec 20 2019, 8:42 AM
anthonyfieroni edited the summary of this revision. (Show Details)Dec 20 2019, 8:44 AM
anthonyfieroni edited the test plan for this revision. (Show Details)
bruns added a comment.Dec 21 2019, 2:15 PM

I think the Summary is very poor.

You only give a phenomenological reason (it no longer crashes), but thats insufficient. State what happens without the change (i.e. who owns what), and why doing it differently is always correct.

Giving a good summary makes reviewing much easier, and also helps any later contributors.

bruns requested changes to this revision.Dec 21 2019, 2:16 PM
This revision now requires changes to proceed.Dec 21 2019, 2:16 PM

You can't run kinfocenter or what?

Application: Info Center (kinfocenter), signal: Segmentation fault
Using host libthread_db library "/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f4c245a2840 (LWP 318849))]

Thread 4 (Thread 0x7f4bf9c42700 (LWP 318852)):
#0  0x00007f4c1b898115 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007f4bfac7ae8b in ?? () from /usr/lib/dri/i965_dri.so
#2  0x00007f4bfac7aaf7 in ?? () from /usr/lib/dri/i965_dri.so
#3  0x00007f4c1b891be4 in start_thread () from /lib/libpthread.so.0
#4  0x00007f4c2042033f in clone () from /lib/libc.so.6

Thread 3 (Thread 0x7f4c067a7700 (LWP 318851)):
#0  0x00007f4c204122ac in read () from /lib/libc.so.6
#1  0x00007f4c17b41e4f in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f4c17afc84e in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#3  0x00007f4c17afcc5a in ?? () from /usr/lib/libglib-2.0.so.0
#4  0x00007f4c17afcdcf in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#5  0x00007f4c20dab21b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#6  0x00007f4c20d562eb in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#7  0x00007f4c20b852ae in QThread::exec() () from /usr/lib/libQt5Core.so.5
#8  0x00007f4c1fc3f7f7 in ?? () from /usr/lib/libQt5DBus.so.5
#9  0x00007f4c20b8627d in ?? () from /usr/lib/libQt5Core.so.5
#10 0x00007f4c1b891be4 in start_thread () from /lib/libpthread.so.0
#11 0x00007f4c2042033f in clone () from /lib/libc.so.6

Thread 2 (Thread 0x7f4c0f6fa700 (LWP 318850)):
#0  0x00007f4c204165af in poll () from /lib/libc.so.6
#1  0x00007f4c1bcb9827 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f4c1bcbb3ba in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007f4c124da960 in ?? () from /usr/lib/qt5/plugins/platforms/../../../libQt5XcbQpa.so.5
#4  0x00007f4c20b8627d in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f4c1b891be4 in start_thread () from /lib/libpthread.so.0
#6  0x00007f4c2042033f in clone () from /lib/libc.so.6

Thread 1 (Thread 0x7f4c245a2840 (LWP 318849)):
[KCrash Handler]
#6  0x00007f4c241399dc in QWeakPointer<QObject>::internalData (this=0x28) at /usr/include/qt5/QtCore/qsharedpointer_impl.h:701
#7  0x00007f4c24141d88 in QPointer<QObject>::data (this=0x28) at /usr/include/qt5/QtCore/qpointer.h:77
#8  0x00007f4c24141c0e in Solid::DeviceInterfacePrivate::backendObject (this=0x20) at /home/toni/solid/src/solid/devices/frontend/deviceinterface.cpp:110 // <----------------- invalid this pointer
#9  0x00007f4c24138c99 in Solid::DevicePrivate::~DevicePrivate (this=0xe766c0, __in_chrg=<optimized out>) at /home/toni/solid/src/solid/devices/frontend/device.cpp:222
#10 0x00007f4c24138d48 in Solid::DevicePrivate::~DevicePrivate (this=0xe766c0, __in_chrg=<optimized out>) at /home/toni/solid/src/solid/devices/frontend/device.cpp:225
#11 0x00007f4c2413ab1b in Solid::DeviceManagerPrivate::~DeviceManagerPrivate (this=0xde4230, __in_chrg=<optimized out>) at /home/toni/solid/src/solid/devices/frontend/devicemanager.cpp:58
#12 0x00007f4c2413abe6 in Solid::DeviceManagerPrivate::~DeviceManagerPrivate (this=0xde4230, __in_chrg=<optimized out>) at /home/toni/solid/src/solid/devices/frontend/devicemanager.cpp:63
#13 0x00007f4c2413f9be in qThreadStorage_deleteData<Solid::DeviceManagerPrivate> (d=0xde4230) at /usr/include/qt5/QtCore/qthreadstorage.h:92
#14 0x00007f4c2413e6c8 in QThreadStorage<Solid::DeviceManagerPrivate*>::deleteData (x=0xde4230) at /usr/include/qt5/QtCore/qthreadstorage.h:135
#15 0x00007f4c20b8b240 in QThreadStorageData::finish(void**) () from /usr/lib/libQt5Core.so.5
#16 0x00007f4c20d59819 in QCoreApplicationPrivate::cleanupThreadData() () from /usr/lib/libQt5Core.so.5
#17 0x00007f4c21348e64 in QGuiApplicationPrivate::~QGuiApplicationPrivate() () from /usr/lib/libQt5Gui.so.5
#18 0x00007f4c21c0f8b9 in QApplicationPrivate::~QApplicationPrivate() () from /usr/lib/libQt5Widgets.so.5
#19 0x00007f4c20d888fe in QObject::~QObject() () from /usr/lib/libQt5Core.so.5
#20 0x00007f4c20d595dc in QCoreApplication::~QCoreApplication() () from /usr/lib/libQt5Core.so.5
#21 0x00007f4c21c1171e in QApplication::~QApplication() () from /usr/lib/libQt5Widgets.so.5
#22 0x000000000040e645 in ?? ()
#23 0x00007f4c2034e2cb in __libc_start_main () from /lib/libc.so.6
#24 0x000000000040e67a in _start ()
[Inferior 1 (process 318849) detached]
bruns added a comment.Dec 22 2019, 9:08 PM

No reason for being rude.

You should know how a reasonable commit message looks like. It should be self contained and easy to understand, without requiring everyone to setup a test bed first, also in retrospective.

Ok, is it clear now?

I've using the patch till now with no issues.

Ping what else to do? If no objectives i'll push it for next framework release.