KDEDModule Patch crashes kded

Michael Jansen kde at michael-jansen.biz
Sun Oct 12 22:57:13 BST 2008


I got it. PowerDevilDaemon was missing Q_CLASSINFO. 

Another nail in the coffin for kdedglobalaccel as a kded module. It's pretty 
complicated to get kdedmodules working correctly and making sure it doesn't 
crash. And whenever kded crashes the desktop get's locked (if kded doesn't 
free the X11 key grabs) and unusable because the global shortcuts won't work 
anymore. Try to work without alt+f2. I can't :-( .

Mike


On Sunday 12 October 2008 19:47:28 Michael Jansen wrote:
> Hi David
>
> The following patch crashes kded . I have no idea why. If we can't get this
> to work i think it would be a good idea to deprecate the direct
> registration of kded modules with dbus and encourage/require the
> registration using an adaptor.
>
> I wonder how useful it is to have a dbus service unable to use signals.
>
>
> diff --git a/kdecore/util/kdedmodule.cpp b/kdecore/util/kdedmodule.cpp
> index ee8c745..9020cd9 100644
> --- a/kdecore/util/kdedmodule.cpp
> +++ b/kdecore/util/kdedmodule.cpp
> @@ -48,10 +48,11 @@ void KDEDModule::setModuleName( const QString& name )
>     QString realPath = d->moduleName = name;
>     realPath.prepend("/modules/");
>     // ExportSignals not used since it triggers a warning at this point
> -   QDBusConnection::sessionBus().registerObject(
> +   Q_ASSERT(QDBusConnection::sessionBus().registerObject(
>             realPath,
>             this,
> -           QDBusConnection::ExportScriptableContents |
> QDBusConnection::ExportAdaptors);
> +           // QDBusConnection::ExportScriptableSlots |
> QDBusConnection::ExportScriptableProperties |
> QDBusConnection::ExportAdaptors));
> +           QDBusConnection::ExportScriptableContents |
> QDBusConnection::ExportAdaptors));
>  }
>
> The crash is always
>
> 9  0x00007f1b0867e001 in dbus_message_new_signal () from
> /lib64/libdbus-1.so.3 #10 0x00007f1b0d792dab in
> QDBusMessagePrivate::toDBusMessage (message=<value optimized out>) at
> /local/build/kde/trunk/src/qt-
> copy/src/dbus/qdbusmessage.cpp:132
> #11 0x00007f1b0d789af9 in QDBusConnectionPrivate::relaySignal
> (this=0x620da0, obj=0x8299f0, mo=<value optimized out>, signalId=<value
> optimized out>, args=@0x7fff18c533d0)
>     at /local/build/kde/trunk/src/qt-copy/src/dbus/qdbusintegrator.cpp:1093
> #12 0x00007f1b0d7b7730 in QDBusConnectionPrivate::qt_metacall
> (this=0x620da0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized
> out>,
> _a=0x7fff18c53350)
>     at .moc/release-shared/moc_qdbusconnection_p.cpp:91
> #13 0x00007f1b0dd2f420 in QMetaObject::activate (sender=0x839eb0,
> from_signal_index=<value optimized out>, to_signal_index=6,
> argv=0xffffffffffffffff)
>     at
> /local/build/kde/trunk/src/qt-copy/src/corelib/kernel/qobject.cpp:3025 #14
> 0x00007f1b0d7a1dd4 in QDBusAdaptorConnector::relaySignal (this=0x1285,
> _t1=0x8299f0, _t2=0x7f1b05d84820, _t3=6, _t4=@0x42)
>     at /local/build/kde/trunk/src/qt-
> copy/src/dbus/qdbusabstractadaptor.cpp:378
> #15 0x00007f1b0d7a202a in QDBusAdaptorConnector::relay (this=0x839eb0,
> senderObj=<value optimized out>, lastSignalIdx=6, argv=0x7fff18c53540)
>     at /local/build/kde/trunk/src/qt-
> copy/src/dbus/qdbusabstractadaptor.cpp:307
> #16 0x00007f1b0d7a2835 in QDBusAdaptorConnector::qt_metacall
> (this=0x839eb0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fff18c53540)
>     at /local/build/kde/trunk/src/qt-
> copy/src/dbus/qdbusabstractadaptor.cpp:365
> #17 0x00007f1b0dd2f420 in QMetaObject::activate (sender=0x8299f0,
> from_signal_index=<value optimized out>, to_signal_index=6,
> argv=0xffffffffffffffff)
>     at
> /local/build/kde/trunk/src/qt-copy/src/corelib/kernel/qobject.cpp:3025 #18
> 0x00007f1b0fb11a32 in KDEDModule::windowUnregistered (this=0x1285,
> _t1=62914561) at
> /home/mjansen/build/kde/trunk/bld/kdelibs/kdecore/kdedmodule.moc:100
> #19 0x00007f1b1082b4e3 in Kded::unregisterWindowId (this=<value optimized
> out>, windowId=62914561, sender=<value optimized out>) at
> /home/mjansen/build/kde/trunk/src/kdelibs/kded/kded.cpp:643
> #20 0x00007f1b1083243f in KdedAdaptor::unregisterWindowId (this=<value
> optimized out>, windowId=62914561, msg=<value optimized out>)
>     at /home/mjansen/build/kde/trunk/src/kdelibs/kded/kdedadaptor.cpp:63
> #21 0x00007f1b10832673 in KdedAdaptor::qt_metacall (this=0x6295f0,
> _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>,
> _a=0x7fff18c53750)
>     at /home/mjansen/build/kde/trunk/bld/kdelibs/kded/kdedadaptor.moc:93
>
> and happens when starting/stopping kmail. probably because it uses this
> register/unregisterWindowId calls. The offending kded module is always
> powerdevil.
>
> Anyone an idea?
>
> Mike


-- 
Michael Jansen

http://www.michael-jansen.biz




More information about the kde-core-devel mailing list