Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-41507

connman QtBearer crash

    XMLWordPrintable

Details

    • Bug
    • Resolution: Invalid
    • P1: Critical
    • None
    • 5.3.2
    • None

    Description

      When using connman bearer backend:

      [nemo@Jolla ~]$ ./dbus-crash
      [D] Foo::foo:19 - Class: dbus connected
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0xfef388
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0xff15a0
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f02548
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f02548
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f02508
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f02508
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f021c0
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f021c0
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f035f0
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f035f0
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f037a0
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f04250
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f04250
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f06030
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f07460
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f07460
      [D] QDBusPendingCallPrivate::QDBusPendingCallPrivate:107 - QDBusPendingCallPrivate::QDBusPendingCallPrivate(const QDBusMessage&, QDBusConnectionPrivate*) 0x43f06388
      [D] QDBusPendingCallPrivate::~QDBusPendingCallPrivate:136 - QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0x43f06388
      [D] Foo::foo:23 - Class: exiting
      [D] Foo::quiting:28 - QUITING!!!!
      virtual QDBusConnectionPrivate::~QDBusConnectionPrivate() QDBusConnectionPrivate(0xfe5590)
      QDBusPendingCallPrivate::~QDBusPendingCallPrivate() 0xfef388
      Segmentation fault (core dumped)
      [nemo@Jolla ~]$

      here is code to make this crash:

      #include <QCoreApplication>
      #include <QDBusConnection>
      #include <QDBusVariant>
      #include <QNetworkConfigurationManager>
      #include <QTimer>

      class Foo : public QObject
      {
      Q_OBJECT

      public slots:
      void foo()

      { QDBusConnection bus = QDBusConnection::systemBus(); QNetworkConfigurationManager *m = new QNetworkConfigurationManager; QCoreApplication::instance()->quit(); }

      };

      int main(int argv, char **argc)
      {
      QCoreApplication app(argv, argc);

      Foo foo;
      QTimer::singleShot(0, &foo, SLOT(foo()));

      return app.exec();
      }

      #include "main.moc"

      00:30 <@w00t> so aiui what appears to be happening: bearer plugin creates an async call (with QStringLiteral data), it goes into QtDBus, application terminates (unloading connman bearer as first step, but does not destroy the pending call(s)), goes to unload qtdbus, which destroys the connection -> hits the dangling QStringLiteral pointer left after the bearer plugin unload

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            lpotter Lorn Potter
            lpotter Lorn Potter
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes