all current sources from master branches (qt, kde)

in kde, I am running
kdesrc/build/kde/kdepim-runtime/resources$ ctest -V -V -R maildir-synctest
which makes the binary synctest coredump deep in Qt. See backtrace below.

I have been looking at the Qt source code and now I have a suspicion.

void QDBusAbstractInterface::disconnectNotify(const char *signal)
{
    // someone disconnecting from one of our signals

So this expects signal to be != 0, I assume. This matches the actual code
which dereferences signal.

OTOH in QObject::disconnect(), the signal argument may be 0 which
means "all signals" according to 
http://doc.qt.digia.com/qt/qobject.html#disconnect

And QObject::disconnect() does call QDBusAbstractInterface::disconnectNotify()
with signal=0, see qobject.cpp line 2928:

    if (res)
        const_cast<QObject*>(sender)->disconnectNotify(signal ? (signal - 1) : 
0);


So - to me it seems that QDBusAbstractInterface should handle signal=0
instead of segfaulting.

Here comes the relevant part of the backtrace:

4  0x00007f0f16757dec in qFatal (msg=0x7f0f18610348 "Received signal %d") at 
/home/wr/kdesrc/qt/src/corelib/global/qglobal.cpp:2552
#5  0x00007f0f185fa773 in QTest::FatalSignalHandler::signal (signum=11) at 
/home/wr/kdesrc/qt/src/testlib/qtestcase.cpp:1729
#6  <signal handler called>
#7  0x00007f0f16768296 in QByteArray::QByteArray (this=0x7fff4b73d290, str=0x1 
<Address 0x1 out of bounds>)
    at /home/wr/kdesrc/qt/src/corelib/tools/qbytearray.cpp:1298
#8  0x00007f0f164472a6 in QDBusConnectionPrivate::prepareHook (hook=..., 
key=..., service=..., path=..., interface=..., name=..., 
    argMatch=..., receiver=0x2439720, signal=0x0, minMIdx=5, 
buildSignature=true) at /home/wr/kdesrc/qt/src/dbus/qdbusintegrator.cpp:1267
#9  0x00007f0f1644e922 in QDBusConnectionPrivate::disconnectRelay 
(this=0x23fe520, service=..., path=..., interface=..., 
    receiver=0x2439720, signal=0x0) at 
/home/wr/kdesrc/qt/src/dbus/qdbusintegrator.cpp:2303
#10 0x00007f0f16460036 in QDBusAbstractInterface::disconnectNotify 
(this=0x2439720, signal=0x0)
    at /home/wr/kdesrc/qt/src/dbus/qdbusabstractinterface.cpp:613
#11 0x00007f0f168be0d3 in QObject::disconnect (sender=0x2439720, signal=0x0, 
receiver=0x7fff4b73e2f0, method=0x0)
    at /home/wr/kdesrc/qt/src/corelib/kernel/qobject.cpp:2928
#12 0x00007f0f16e7eaf0 in slotSignalEmitted (this=<optimized out>) at 
/home/wr/kdesrc/kde/kdelibs/kdecore/util/qtest_kde.cpp:44
#13 qt_static_metacall (_id=<optimized out>, _o=<optimized out>, _c=<optimized 
out>, _a=<optimized out>)
    at /home/wr/kdesrc/build/kde/kdelibs/kdecore/qtest_kde.moc:47


-- 
Wolfgang
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to