Fix QVariantMapList operator >> implementation
ClosedPublic

Authored by aleksanderm on Mar 14 2018, 9:46 AM.

Details

Summary
Thread 1 "united-airlion" received signal SIGSEGV, Segmentation fault.
0x00007ffff255776f in _dbus_type_reader_recurse () from /usr/lib/libdbus-1.so.3
(gdb) bt
#0  0x00007ffff255776f in _dbus_type_reader_recurse () at /usr/lib/libdbus-1.so.3
#1  0x00007ffff6a821d0 in  () at /usr/lib/libQt5DBus.so.5
#2  0x00007ffff6a825b8 in QDBusArgument::beginArray() const () at /usr/lib/libQt5DBus.so.5
#3  0x00007ffff6443ec9 in operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&) () at /usr/lib/libKF5ModemManagerQt.so.6
#4  0x00007ffff6443f2d in operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&) () at /usr/lib/libKF5ModemManagerQt.so.6
#5  0x00007ffff6443f2d in operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&) () at /usr/lib/libKF5ModemManagerQt.so.6
#6  0x00007ffff6443f2d in operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&) () at /usr/lib/libKF5ModemManagerQt.so.6
#7  0x00007ffff6a87d30 in QDBusMetaType::demarshall(QDBusArgument const&, int, void*) () at /usr/lib/libQt5DBus.so.5

Diff Detail

Repository
R281 ModemManagerQt
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
aleksanderm created this revision.Mar 14 2018, 9:46 AM
Restricted Application added a project: Frameworks. · View Herald TranscriptMar 14 2018, 9:46 AM
aleksanderm requested review of this revision.Mar 14 2018, 9:46 AM

Is that custom marshaller even neccessary? I thought Qt could resolve QList and QVariantMap (even nested) automatically? Can you try just removing that entire thing?

Is that custom marshaller even neccessary? I thought Qt could resolve QList and QVariantMap (even nested) automatically? Can you try just removing that entire thing?

Unless I'm missing something, it seems that it really is needed, this is what I got when removing the custom marshallers for QVariantMapList:

CMakeFiles/KF5ModemManagerQt.dir/bearer.cpp.o: In function `QList<QMap<QString, QVariant> > qdbus_cast<QList<QMap<QString, QVariant> > >(QDBusArgument const&, QList<QMap<QString, QVariant> >*)':
bearer.cpp:(.text._Z10qdbus_castI5QListI4QMapI7QString8QVariantEEET_RK13QDBusArgumentPS6_[_Z10qdbus_castI5QListI4QMapI7QString8QVariantEEET_RK13QDBusArgumentPS6_]+0x3e): undefined reference to `operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&)'
CMakeFiles/KF5ModemManagerQt.dir/generictypes.cpp.o: In function `void qDBusMarshallHelper<QList<QMap<QString, QVariant> > >(QDBusArgument&, QList<QMap<QString, QVariant> > const*)':
generictypes.cpp:(.text._Z19qDBusMarshallHelperI5QListI4QMapI7QString8QVariantEEEvR13QDBusArgumentPKT_[_Z19qDBusMarshallHelperI5QListI4QMapI7QString8QVariantEEEvR13QDBusArgumentPKT_]+0x1f): undefined reference to `operator<<(QDBusArgument&, QList<QMap<QString, QVariant> > const&)'
CMakeFiles/KF5ModemManagerQt.dir/generictypes.cpp.o: In function `void qDBusDemarshallHelper<QList<QMap<QString, QVariant> > >(QDBusArgument const&, QList<QMap<QString, QVariant> >*)':
generictypes.cpp:(.text._Z21qDBusDemarshallHelperI5QListI4QMapI7QString8QVariantEEEvRK13QDBusArgumentPT_[_Z21qDBusDemarshallHelperI5QListI4QMapI7QString8QVariantEEEvRK13QDBusArgumentPT_]+0x1f): undefined reference to `operator>>(QDBusArgument const&, QList<QMap<QString, QVariant> >&)'
collect2: error: ld returned 1 exit status
jgrulich accepted this revision.Mar 15 2018, 1:59 PM
This revision is now accepted and ready to land.Mar 15 2018, 1:59 PM
broulik accepted this revision.Mar 15 2018, 3:07 PM
This revision was automatically updated to reflect the committed changes.
Restricted Application added a subscriber: kde-frameworks-devel. · View Herald TranscriptJan 17 2019, 12:06 AM