Bug 312914 - segfault when reloading kscreen kded4 module
Summary: segfault when reloading kscreen kded4 module
Status: RESOLVED FIXED
Alias: None
Product: KScreen
Classification: Plasma
Component: kded (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Alex Fiestas
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-01-08 22:13 UTC by Achim Bohnet
Modified: 2013-01-09 10: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 Achim Bohnet 2013-01-08 22:13:01 UTC
Application: kded4 ($Id$)
KDE Platform Version: 4.9.97 (Compiled from sources)
Qt Version: 4.8.3
Operating System: Linux 3.5.0-21-generic x86_64
Distribution: Ubuntu 12.10

-- Information about the crash:
- What I was doing when the application crashed:

I was running in a terminal  kscreen-console while in another terminal

./kde-reset-kded 
qdbus org.kde.kded /kded org.kde.kded.unloadModule randrmonitor
false
qdbus org.kde.kded /kded org.kde.kded.setModuleAutoloading randrmonitor false


qdbus org.kde.kded /kded org.kde.kded.unloadModule kscreen
true
qdbus org.kde.kded /kded org.kde.kded.setModuleAutoloading kscreen true

qdbus org.kde.kded /kded org.kde.kded.loadModule kscreen
Error: org.freedesktop.DBus.Error.NoReply
Message did not receive a reply (timeout by message bus)

-- Backtrace:
Application: KDE Dæmon (kdeinit4), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f5ed377a780 (LWP 10668))]

Thread 6 (Thread 0x7f5ebb3c8700 (LWP 10678)):
#0  0x00007f5ed614cfc0 in __pthread_mutex_lock (mutex=0x7f5eac000a60) at pthread_mutex_lock.c:113
#1  0x00007f5ed58aee21 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5ed5871623 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5ed5871cab in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f5ed9da1c16 in QEventDispatcherGlib::processEvents (this=0x7f5eac0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7f5ebb3c7dd0, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f5ed9d72548 in QEventLoop::exec (this=0x7f5ebb3c7dd0, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f5ed9c73b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#9  0x00007f5ed9d529af in QInotifyFileSystemWatcherEngine::run (this=0x2609850) at io/qfilesystemwatcher_inotify.cpp:248
#10 0x00007f5ed9c76aec in QThreadPrivate::start (arg=0x2609850) at thread/qthread_unix.cpp:338
#11 0x00007f5ed614ae9a in start_thread (arg=0x7f5ebb3c8700) at pthread_create.c:308
#12 0x00007f5ed8980cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f5eabdf9700 (LWP 10691)):
#0  0x00007f5ed58aee21 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#1  0x00007f5ed5871623 in g_main_context_prepare () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5ed5871cab in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f5ed9da1c16 in QEventDispatcherGlib::processEvents (this=0x7f5e9c0008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#5  0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7f5eabdf8e00, flags=...) at kernel/qeventloop.cpp:149
#6  0x00007f5ed9d72548 in QEventLoop::exec (this=0x7f5eabdf8e00, flags=...) at kernel/qeventloop.cpp:204
#7  0x00007f5ed9c73b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#8  0x00007f5ed9c76aec in QThreadPrivate::start (arg=0x29c8c40) at thread/qthread_unix.cpp:338
#9  0x00007f5ed614ae9a in start_thread (arg=0x7f5eabdf9700) at pthread_create.c:308
#10 0x00007f5ed8980cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f5eab5f8700 (LWP 10692)):
#0  0x00007f5ed614e05d in __pthread_mutex_unlock_usercnt (mutex=<optimized out>, decr=<optimized out>) at pthread_mutex_unlock.c:52
#1  __pthread_mutex_unlock (mutex=0x7f5ea4000a60) at pthread_mutex_unlock.c:290
#2  0x00007f5ed58aee51 in g_mutex_unlock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5ed5871884 in g_main_context_check () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f5ed5871d22 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007f5ed9da1c16 in QEventDispatcherGlib::processEvents (this=0x7f5ea40008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#7  0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7f5eab5f7e00, flags=...) at kernel/qeventloop.cpp:149
#8  0x00007f5ed9d72548 in QEventLoop::exec (this=0x7f5eab5f7e00, flags=...) at kernel/qeventloop.cpp:204
#9  0x00007f5ed9c73b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#10 0x00007f5ed9c76aec in QThreadPrivate::start (arg=0x299fd10) at thread/qthread_unix.cpp:338
#11 0x00007f5ed614ae9a in start_thread (arg=0x7f5eab5f8700) at pthread_create.c:308
#12 0x00007f5ed8980cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#13 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f5ea3fff700 (LWP 10738)):
#0  0x00007f5ed8975303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f5ed5871d84 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5ed9da1c16 in QEventDispatcherGlib::processEvents (this=0x7f5e980008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#4  0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7f5ea3ffedd0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f5ed9d72548 in QEventLoop::exec (this=0x7f5ea3ffedd0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f5ed9c73b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#7  0x00007f5ed9d529af in QInotifyFileSystemWatcherEngine::run (this=0x2596830) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f5ed9c76aec in QThreadPrivate::start (arg=0x2596830) at thread/qthread_unix.cpp:338
#9  0x00007f5ed614ae9a in start_thread (arg=0x7f5ea3fff700) at pthread_create.c:308
#10 0x00007f5ed8980cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f5ebbbc9700 (LWP 13859)):
#0  0x00007f5ed614cf69 in __pthread_mutex_lock (mutex=0x7f5eb40028c0) at pthread_mutex_lock.c:92
#1  0x00007f5ed58aee21 in g_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f5ed58716eb in g_main_context_query () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f5ed5871cf9 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f5ed9da1c16 in QEventDispatcherGlib::processEvents (this=0x7f5eb4003500, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7f5ebbbc8e00, flags=...) at kernel/qeventloop.cpp:149
#7  0x00007f5ed9d72548 in QEventLoop::exec (this=0x7f5ebbbc8e00, flags=...) at kernel/qeventloop.cpp:204
#8  0x00007f5ed9c73b10 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#9  0x00007f5ed9c76aec in QThreadPrivate::start (arg=0x2cbb360) at thread/qthread_unix.cpp:338
#10 0x00007f5ed614ae9a in start_thread (arg=0x7f5ebbbc9700) at pthread_create.c:308
#11 0x00007f5ed8980cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#12 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f5ed377a780 (LWP 10668)):
[KCrash Handler]
#6  0x00007f5ed9d8cbd8 in QObject::connect (sender=0x25ab360, signal=0x7f5ebfd36020 "2ready()", receiver=0x2533330, method=0x7f5ebfd36018 "1init()", type=Qt::AutoConnection) at kernel/qobject.cpp:2551
#7  0x00007f5ebfd2c848 in connect (atype=Qt::AutoConnection, amember=0x7f5ebfd36018 "1init()", asignal=0x7f5ebfd36020 "2ready()", asender=<optimized out>, this=0x2533330) at /usr/include/qt4/QtCore/qobject.h:339
#8  KScreenDaemon::KScreenDaemon (this=0x2533330, parent=<optimized out>) at /home/allee/Sources/kscreen-ng/kscreen-0.0+git2013010801/kded/daemon.cpp:59
#9  0x00007f5ebfd2c957 in KPluginFactory::createInstance<KScreenDaemon, QObject> (parentWidget=<optimized out>, parent=<optimized out>, args=...) at /usr/include/KDE/../kpluginfactory.h:477
#10 0x00007f5eda2ce7c5 in KPluginFactory::create (this=0x2544c80, iface=0x7f5eda3251c0 <qt_meta_stringdata_KDEDModule> "KDEDModule", parentWidget=0x0, parent=0x2380110, args=..., keyword=...) at ../../kdecore/util/kpluginfactory.cpp:203
#11 0x00007f5ec6730cd7 in create<KDEDModule> (args=..., parent=0x2380110, this=<optimized out>) at ../../kdecore/util/kpluginfactory.h:507
#12 Kded::loadModule (this=this@entry=0x2380110, s=..., onDemand=onDemand@entry=false) at ../../kded/kded.cpp:409
#13 0x00007f5ec67315bb in Kded::loadModule (this=0x2380110, obj=..., onDemand=<optimized out>) at ../../kded/kded.cpp:361
#14 0x00007f5ec6734585 in KdedAdaptor::loadModule (this=<optimized out>, module=...) at ../../kded/kdedadaptor.cpp:44
#15 0x00007f5ec673488e in qt_static_metacall (_a=<optimized out>, _id=<optimized out>, _o=<optimized out>, _c=<optimized out>) at ./kdedadaptor.moc:70
#16 KdedAdaptor::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./kdedadaptor.moc:64
#17 0x00007f5ec673499b in KdedAdaptor::qt_metacall (this=0x23875b0, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7fff81fc2260) at ./kdedadaptor.moc:124
#18 0x00007f5ed70eaed3 in QDBusConnectionPrivate::deliverCall (this=this@entry=0x237c410, object=object@entry=0x23875b0, msg=..., metaTypes=..., slotIdx=4) at qdbusintegrator.cpp:947
#19 0x00007f5ed70ebfd5 in QDBusConnectionPrivate::activateCall (this=this@entry=0x237c410, object=0x23875b0, flags=flags@entry=273, msg=...) at qdbusintegrator.cpp:857
#20 0x00007f5ed70ec94f in QDBusConnectionPrivate::activateObject (this=0x237c410, node=..., msg=..., pathStartPos=<optimized out>) at qdbusintegrator.cpp:1423
#21 0x00007f5ed70eca2b in QDBusActivateObjectEvent::placeMetaCall (this=0x2d4f9f0) at qdbusintegrator.cpp:1537
#22 0x00007f5ed9d8843e in QObject::event (this=0x2380110, e=<optimized out>) at kernel/qobject.cpp:1195
#23 0x00007f5ed911ae9c in QApplicationPrivate::notify_helper (this=this@entry=0x2388430, receiver=receiver@entry=0x2380110, e=e@entry=0x2d4f9f0) at kernel/qapplication.cpp:4562
#24 0x00007f5ed911f30a in QApplication::notify (this=0x7fff81fc3040, receiver=0x2380110, e=0x2d4f9f0) at kernel/qapplication.cpp:4423
#25 0x00007f5edaaec626 in KApplication::notify (this=0x7fff81fc3040, receiver=0x2380110, event=0x2d4f9f0) at ../../kdeui/kernel/kapplication.cpp:311
#26 0x00007f5ed9d7356e in QCoreApplication::notifyInternal (this=0x7fff81fc3040, receiver=receiver@entry=0x2380110, event=event@entry=0x2d4f9f0) at kernel/qcoreapplication.cpp:915
#27 0x00007f5ed9d773f1 in sendEvent (event=0x2d4f9f0, receiver=0x2380110) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#28 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x22f32b0) at kernel/qcoreapplication.cpp:1539
#29 0x00007f5ed9da1a63 in sendPostedEvents () at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#30 postEventSourceDispatch (s=0x2389ac0) at kernel/qeventdispatcher_glib.cpp:279
#31 0x00007f5ed5871ab5 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#32 0x00007f5ed5871de8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f5ed5871ea4 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007f5ed9da1bf6 in QEventDispatcherGlib::processEvents (this=0x22f57d0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#35 0x00007f5ed91bfc1e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#36 0x00007f5ed9d722bf in QEventLoop::processEvents (this=this@entry=0x7fff81fc2dc0, flags=...) at kernel/qeventloop.cpp:149
#37 0x00007f5ed9d72548 in QEventLoop::exec (this=0x7fff81fc2dc0, flags=...) at kernel/qeventloop.cpp:204
#38 0x00007f5ed9d77708 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1187
#39 0x00007f5ec67303f0 in kdemain (argc=1, argv=0x236a2f0) at ../../kded/kded.cpp:924
#40 0x00000000004084c6 in launch (argc=argc@entry=1, _name=_name@entry=0x40b127 "kded4", args=args@entry=0x0, cwd=cwd@entry=0x0, envc=envc@entry=0, envs=<optimized out>, envs@entry=0x0, reset_env=reset_env@entry=false, tty=tty@entry=0x0, avoid_loops=avoid_loops@entry=false, startup_id_str=startup_id_str@entry=0x40afb6 "0") at ../../kinit/kinit.cpp:738
#41 0x0000000000405a29 in main (argc=4, argv=<optimized out>, envp=0x7fff81fc3a40) at ../../kinit/kinit.cpp:1853

Reported using DrKonqi
Comment 1 Achim Bohnet 2013-01-08 22:17:07 UTC
Happens with git sources for 8. Jan 2013  evening.  Contains commit 66432954

Environment is  kubuntu 12.10 with kde 4.10 rc2 pkgs
Comment 2 Daniel Vrátil 2013-01-09 08:38:41 UTC
Git commit 40735b21adb5131fd6b6336a5ba1c3b5ccfaa434 by Dan Vrátil.
Committed on 09/01/2013 at 09:38.
Pushed by dvratil into branch 'master'.

Null Generatorpointer in Generator::destroy()

Fixes crash when reloading the KDED module, because
Generator::self() was returning pointer that has been previously
deleted in Generator::destroy() when the module was unloaded.

M  +1    -0    kded/generator.cpp

http://commits.kde.org/kscreen/40735b21adb5131fd6b6336a5ba1c3b5ccfaa434
Comment 3 Alex Fiestas 2013-01-09 09:32:59 UTC
Mmm why is kscreen-console (libkscreen) being affected by code of kscreen ?
Comment 4 Daniel Vrátil 2013-01-09 10:47:05 UTC
The fact that kscreen-console was running is unrelated, the backtrace clearly comes from KDED and I was able to reproduce the crash locally without running kscreen-console. I updated to bug title accordingly.