Bug 264565 - Restarting power management service crashed kdeinit4
Summary: Restarting power management service crashed kdeinit4
Status: RESOLVED FIXED
Alias: None
Product: solid
Classification: Frameworks and Libraries
Component: powermanagement-daemon (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Dario Freddi
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-01-28 03:50 UTC by Jesse Milette
Modified: 2011-01-31 00:32 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jesse Milette 2011-01-28 03:50:01 UTC
Application: kded4 ($Id: kded.cpp 1204125 2010-12-06 11:17:10Z dfaure $)
KDE Platform Version: 4.6.00 (4.6.0)
Qt Version: 4.7.0
Operating System: Linux 2.6.35-25-generic i686
Distribution: Ubuntu 10.10

-- Information about the crash:
- What I was doing when the application crashed:
I had just finished watching a movie, and noticed that there was a several second delay between clicking the power plasmoid and when the plasmoid appeared -- there was no high CPU usage of any process.  I opened the kde service manager, and disabled power management.  When I turned it back on, kdeinit4 crashed, and after it restarted the power plasmoid behaved as normal.


- Unusual behavior I noticed:

-- Backtrace:
Application: KDE Daemon (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0xb77b9930 (LWP 1907))]

Thread 4 (Thread 0xb21ffb70 (LWP 1915)):
#0  0x08506b68 in g_main_context_check () from /lib/libglib-2.0.so.0
#1  0x0850745e in ?? () from /lib/libglib-2.0.so.0
#2  0x08507848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#3  0x00c8059f in QEventDispatcherGlib::processEvents (this=0x8e26478, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#4  0x00c50609 in QEventLoop::processEvents (this=0xb21ff1e0, flags=) at kernel/qeventloop.cpp:149
#5  0x00c50a8a in QEventLoop::exec (this=0xb21ff1e0, flags=...) at kernel/qeventloop.cpp:201
#6  0x00b4cb7e in QThread::exec (this=0xb220f2c8) at thread/qthread.cpp:490
#7  0x00c2f35b in QInotifyFileSystemWatcherEngine::run (this=0xb220f2c8) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00b4fdf9 in QThreadPrivate::start (arg=0xb220f2c8) at thread/qthread_unix.cpp:266
#9  0x02478437 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#10 0x00e5669e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 3 (Thread 0xb11fdb70 (LWP 2004)):
#0  0x07d177df in __pthread_mutex_unlock_usercnt (mutex=0x8edb2e4, decr=0) at pthread_mutex_unlock.c:77
#1  0x00e63fa6 in pthread_mutex_unlock (mutex=0x8edb2e4) at forward.c:184
#2  0x08507428 in ?? () from /lib/libglib-2.0.so.0
#3  0x08507ba7 in g_main_loop_run () from /lib/libglib-2.0.so.0
#4  0x02e046b4 in ?? () from /usr/lib/libgio-2.0.so.0
#5  0x0852e48f in ?? () from /lib/libglib-2.0.so.0
#6  0x02478437 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#7  0x00e5669e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 2 (Thread 0xb2ba4b70 (LWP 6489)):
#0  0x009c3e36 in clock_gettime (clock_id=10256372, tp=0xb2ba3ef0) at ../sysdeps/unix/clock_gettime.c:100
#1  0x00bab50b in do_gettime () at tools/qelapsedtimer_unix.cpp:105
#2  qt_gettime () at tools/qelapsedtimer_unix.cpp:119
#3  0x00c826e5 in QTimerInfoList::updateCurrentTime (this=0x8e5928c) at kernel/qeventdispatcher_unix.cpp:339
#4  0x00c8272a in QTimerInfoList::timerWait (this=0x8e5928c, tm=...) at kernel/qeventdispatcher_unix.cpp:442
#5  0x00c807a8 in timerSourcePrepareHelper (src=<value optimized out>, timeout=0xb2ba401c) at kernel/qeventdispatcher_glib.cpp:136
#6  0x00c8083d in timerSourcePrepare (source=0x0, timeout=0x9c7ff4) at kernel/qeventdispatcher_glib.cpp:169
#7  0x08506e6a in g_main_context_prepare () from /lib/libglib-2.0.so.0
#8  0x08507279 in ?? () from /lib/libglib-2.0.so.0
#9  0x08507848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#10 0x00c8059f in QEventDispatcherGlib::processEvents (this=0x8e7d1a8, flags=...) at kernel/qeventdispatcher_glib.cpp:417
#11 0x00c50609 in QEventLoop::processEvents (this=0xb2ba41f0, flags=) at kernel/qeventloop.cpp:149
#12 0x00c50a8a in QEventLoop::exec (this=0xb2ba41f0, flags=...) at kernel/qeventloop.cpp:201
#13 0x00b4cb7e in QThread::exec (this=0x8ee0918) at thread/qthread.cpp:490
#14 0x0763ce56 in ?? () from /usr/lib/kde4/kded_bluedevil.so
#15 0x00b4fdf9 in QThreadPrivate::start (arg=0x8ee0918) at thread/qthread_unix.cpp:266
#16 0x02478437 in ?? () from /usr/lib/nvidia-current/libGL.so.1
#17 0x00e5669e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 1 (Thread 0xb77b9930 (LWP 1907)):
[KCrash Handler]
#7  0x00d853c8 in QHashData::shared_null () from /usr/lib/libQtCore.so.4
#8  0x02b276b6 in PowerDevil::ActionPool::loadAction (this=0x8f06950, actionId=..., group=..., parent=0x8ef6b20) at ../../../powerdevil/daemon/powerdevilactionpool.cpp:82
#9  0x02b2d16a in PowerDevil::Core::loadProfile (this=0x8ef6b20, id=...) at ../../../powerdevil/daemon/powerdevilcore.cpp:327
#10 0x02b2d7f0 in PowerDevil::Core::reloadProfile (this=0x8ef6b20, state=2) at ../../../powerdevil/daemon/powerdevilcore.cpp:298
#11 0x02b2da11 in PowerDevil::Core::reloadProfile (this=0x8ef6b20) at ../../../powerdevil/daemon/powerdevilcore.cpp:231
#12 0x02b2da4a in PowerDevil::Core::refreshStatus (this=0x8ef6b20) at ../../../powerdevil/daemon/powerdevilcore.cpp:226
#13 0x02b2de52 in PowerDevil::Core::onBackendReady (this=0x8ef6b20) at ../../../powerdevil/daemon/powerdevilcore.cpp:144
#14 0x02b3109a in PowerDevil::Core::qt_metacall (this=0x8ef6b20, _c=QMetaObject::InvokeMetaMethod, _id=24, _a=0xbffe3e2c) at ./powerdevilcore.moc:168
#15 0x00c578ca in QMetaObject::metacall (object=0x8ef6b20, cl=3221109436, idx=28, argv=0xbffe3e2c) at kernel/qmetaobject.cpp:237
#16 0x00c6a6ad in QMetaObject::activate (sender=0x8f00b88, m=0x2b4aaa0, local_signal_index=5, argv=0x8ef6b20) at kernel/qobject.cpp:3280
#17 0x02b28bd7 in PowerDevil::BackendInterface::backendReady (this=0x8f00b88) at ./powerdevilbackendinterface.moc:146
#18 0x02b291bc in PowerDevil::BackendInterface::setBackendIsReady (this=0x8f00b88, availableBrightnessControls=..., supportedSuspendMethods=...) at ../../../powerdevil/daemon/powerdevilbackendinterface.cpp:120
#19 0x02b06282 in PowerDevilUPowerBackend::init (this=0x8f00b88) at ../../../powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp:151
#20 0x02b2f9a2 in PowerDevil::Core::loadCore (this=0x8ef6b20, backend=0x8f00b88) at ../../../powerdevil/daemon/powerdevilcore.cpp:80
#21 0x02afe61b in KDEDPowerDevil::init (this=0x8f0ab70) at ../../../powerdevil/daemon/kdedpowerdevil.cpp:89
#22 0x02afeaa1 in KDEDPowerDevil::qt_metacall (this=0x8f0ab70, _c=QMetaObject::InvokeMetaMethod, _id=8, _a=0x8e9bdf0) at ./kdedpowerdevil.moc:73
#23 0x00c578ca in QMetaObject::metacall (object=0x8f0ab70, cl=3221109436, idx=8, argv=0x8e9bdf0) at kernel/qmetaobject.cpp:237
#24 0x00c62df6 in QMetaCallEvent::placeMetaCall (this=0x8eedde8, object=0x8f0ab70) at kernel/qobject.cpp:534
#25 0x00c646a2 in QObject::event (this=0x8f0ab70, e=0x8f06888) at kernel/qobject.cpp:1219
#26 0x010fbfdc in QApplicationPrivate::notify_helper (this=0x8d2ed50, receiver=0x8f0ab70, e=0x8eedde8) at kernel/qapplication.cpp:4396
#27 0x0110204e in QApplication::notify (this=0xbffe4b00, receiver=0x8f0ab70, e=0x8eedde8) at kernel/qapplication.cpp:3798
#28 0x00319f7a in KApplication::notify (this=0xbffe4b00, receiver=0x8f0ab70, event=0x8eedde8) at ../../kdeui/kernel/kapplication.cpp:311
#29 0x00c51b3b in QCoreApplication::notifyInternal (this=0xbffe4b00, receiver=0x8f0ab70, event=0x8eedde8) at kernel/qcoreapplication.cpp:732
#30 0x00c54d8b in sendEvent (receiver=0x0, event_type=0, data=0x8c49f20) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#31 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8c49f20) at kernel/qcoreapplication.cpp:1373
#32 0x00c54f4d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1266
#33 0x00c80a74 in sendPostedEvents (s=0x8d30f78) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#34 postEventSourceDispatch (s=0x8d30f78) at kernel/qeventdispatcher_glib.cpp:277
#35 0x08503855 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#36 0x08507668 in ?? () from /lib/libglib-2.0.so.0
#37 0x08507848 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#38 0x00c80565 in QEventDispatcherGlib::processEvents (this=0x8d07090, flags=...) at kernel/qeventdispatcher_glib.cpp:415
#39 0x011bdbe5 in QGuiEventDispatcherGlib::processEvents (this=0x8d07090, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#40 0x00c50609 in QEventLoop::processEvents (this=0xbffe4a54, flags=) at kernel/qeventloop.cpp:149
#41 0x00c50a8a in QEventLoop::exec (this=0xbffe4a54, flags=...) at kernel/qeventloop.cpp:201
#42 0x00c5500f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#43 0x010fae07 in QApplication::exec () at kernel/qapplication.cpp:3672
#44 0x0253b9b7 in kdemain (argc=1, argv=0x8cde448) at ../../kded/kded.cpp:925
#45 0x0804e739 in launch (argc=<value optimized out>, _name=<value optimized out>, args=<value optimized out>, cwd=0x0, envc=0, envs=0x0, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x8051c2b "0") at ../../kinit/kinit.cpp:742
#46 0x08050899 in main (argc=4, argv=0xbffe52d4, envp=0xbffe52e8) at ../../kinit/kinit.cpp:1857

Possible duplicates by query: bug 260874.

Reported using DrKonqi
Comment 1 Dario Freddi 2011-01-31 00:29:58 UTC
Git commit c71259cb52dd6f0cfb36ef8414fbcae7695e03e9 by Dario Freddi.
Pushed by dafre into branch 'KDE/4.6'.

Move cache clearing out of ActionPool's destructor, and force Core to trigger cache clearing on destruction.

ActionPool is a global object, hence the destructor won't be called after Core has been deleted. For this reason, clearing should occur inside Core itself,
or upon a restart, thr cache could be corrupted.

BUG: 264565
FIXED-IN: 4.6.1

(cherry picked from commit f4517e2bb59ff6bc4c1b38724f49aa54fec6c0f9)

M  +11   -2    powerdevil/daemon/powerdevilactionpool.cpp     
M  +2    -0    powerdevil/daemon/powerdevilactionpool.h     
M  +2    -1    powerdevil/daemon/powerdevilcore.cpp     

http://commits.kde.org/a5d5b61a/c71259cb52dd6f0cfb36ef8414fbcae7695e03e9
Comment 2 Dario Freddi 2011-01-31 00:32:52 UTC
Git commit f4517e2bb59ff6bc4c1b38724f49aa54fec6c0f9 by Dario Freddi.
Pushed by dafre into branch 'master'.

Move cache clearing out of ActionPool's destructor, and force Core to trigger cache clearing on destruction.

ActionPool is a global object, hence the destructor won't be called after Core has been deleted. For this reason, clearing should occur inside Core itself,
or upon a restart, thr cache could be corrupted.

CCBUG: 264565

M  +11   -2    powerdevil/daemon/powerdevilactionpool.cpp     
M  +2    -0    powerdevil/daemon/powerdevilactionpool.h     
M  +2    -1    powerdevil/daemon/powerdevilcore.cpp     

http://commits.kde.org/a5d5b61a/f4517e2bb59ff6bc4c1b38724f49aa54fec6c0f9