DeviceInterface should be treated as weak object, also let he manages its backend.
Open Kinfocenter select energy tab, close kcm.
Details
Details
Diff Detail
Diff Detail
- Repository
- R245 Solid
- Lint
Lint Skipped - Unit
Unit Tests Skipped
Comment Actions
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.
Comment Actions
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]
Comment Actions
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.