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

QRemoteObjects crashes when local QUrl is >= 32 characters on armv7

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reported
    • Priority: P2: Important
    • Resolution: Unresolved
    • Affects Version/s: 5.10
    • Fix Version/s: None
    • Component/s: Remote Objects
    • Labels:
      None
    • Platform/s:
      Linux/X11

      Description

      This error is reproducible on release build only for armv7ahf targets.

      If the host URL length is >+= 31 characters (e.g. QUrl("local:replica_long_local_address)), a log similar to the one below (from qtremoteobjects -> tests -> auto -> tst_integration) would be expected. After sending packet from the server, it will call void QRemoteObjectSourceIo::onServerDisconnect(QObject *conn) method. Then the warning messages will be printed until timeout or the occurrence of a  segfault.

      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:  QRemoteObjectSourceIo is Listening QUrl("local:replica_Local_Integration")
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: Connection made 0 5 "startedChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: Connection made 1 6 "rpmChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: Connection made 2 7 "engineTypeChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *host Registering "Engine"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client Opening connection to "local:replica_Local_Integration"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client Replica Connection isValid false
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client Starting setReplicaImplementation for "Engine"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client void QRemoteObjectNodePrivate::openConnectionIfNeeded(const QString&) "Engine" 0x89ff8
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client "Engine" not available - available addresses: QHash()
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: configurePrivate starting for "Engine"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Rep connect 5 true "initialized"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Rep connect 6 true "stateChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Connect 7 true "startedChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Connect 8 true "rpmChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Connect 9 true "engineTypeChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects:   Connect 10 true "cylindersChanged"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: "configurePrivate finished, signalOffset = 7, methodOffset = 11, #Signals = 4"
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *client setReplicaImplementation - Created new instance "Engine" QHash()
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *host handleConnection QSet()
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *host Wrote ObjectList packet from Server ("Engine")
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::write() was not called in QAbstractSocket::ConnectedState
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects: *host OnServerDisconnect
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::bytesAvailable() was called in QAbstractSocket::UnconnectedState
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::read() was called not in QAbstractSocket::ConnectedState or QAbstractSocket::BoundState
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects.io: "ClientIoDevice" read() 0 -1
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::bytesAvailable() was called in QAbstractSocket::UnconnectedState
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::read() was called not in QAbstractSocket::ConnectedState or QAbstractSocket::BoundState
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects.io: "ClientIoDevice" read() 0 -2
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::bytesAvailable() was called in QAbstractSocket::UnconnectedState
      QWARN  : tst_Integration::basicTest(local) QNativeSocketEngine::read() was called not in QAbstractSocket::ConnectedState or QAbstractSocket::BoundState
      QDEBUG : tst_Integration::basicTest(local) qt.remoteobjects.io: "ClientIoDevice" read() 0 -3
      

      This could have something to do with compiler optimization for release build on this architecture.

        Attachments

          Issue Links

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

            Activity

              People

              Assignee:
              bstottle Brett Stottlemyer
              Reporter:
              assam Assam Boudjelthia
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:

                  Gerrit Reviews

                  There are no open Gerrit changes