Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Possible memory corruption in 5.6.1 and 5.7 RC

Possible memory corruption in 5.6.1 and 5.7 RC

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
5 Posts 3 Posters 1.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    dbrunner
    wrote on last edited by
    #1

    Hi all,

    We've run into a problem when building our app with Qt newer than 5.6.0 (tried 5.6.1 and 5.7 RC). It throws errors while loading, usually "Cannot assign object to property" referencing a QML line that should not produce that error. The errors occur on both Windows (MinGW) and Linux. It doesn't appear to involve a bug in the C++ parts of our project. I can make the crash appear and disappear by commenting or uncommenting pieces of QML code such that the same set of C++ classes is used. When I run it using Memcheck, Helgrind, and DRD on Linux, the only errors that come up are in Qt code (mostly to do with registering types with QML or making signal connections).

    Unfortunately, I haven't been able to reduce it to a simple test case, since I haven't found a pattern in what can be instantiated in QML to cause the error. For example, I tried removing all but one tab from my main window's TabView. Now, simply adding a second tab (empty but for an empty GridLayout) causes the failure.

    I'm at a loss as to where to proceed next, except for bisecting the Qt source itself (which could get quite time-consuming due to the long build time). Does anyone have any ideas on what could be going on, or knowledge of the internals of QML/V4 that sheds some light on this?

    In case it's helpful, our source is on Bitbucket; it can be downloaded with

    hg clone ssh://hg@bitbucket.org/xcptools/xcpsetup
    

    The project page is at https://bitbucket.org/xcptools/xcpsetup/. The only external dependency is Boost 1.60 (other versions will probably work too; only the headers are needed). The subproject causing the most grief is hgmutils/hgmparam. I've created a branch (ST-124) with portions of the QML commented out to allow the program to run. Uncommenting things (e.g. the KeypadDisplayLayout tab in ParamTabView.qml) will break it.

    Thanks!
    --Doug

    1 Reply Last reply
    0
    • D Offline
      D Offline
      DavidFaure
      wrote on last edited by
      #2

      Seeing the same error with the plasma clock applet. I don't think "memory corruption" is the right term btw (actually I ran valgrind and it says no problem). This is more of a race condition (not necessarily in the multithreading sense, but at least in the "order of async operations is undefined, leading to varying behaviour between runs).

      When StackViewDelegate.qml gets loaded after StackView.qml, everything's fine.
      If it's loaded before (as it happens in some runs, for some unknown reason), then this happens (the debug output was added by me) :

      QQmlTypeLoader::getType: QUrl("file:///d/qt/5/kde/qtbase/qml/QtQuick/Controls/StackViewDelegate.qml") calling load
      QQmlPropertyCacheCreator::createMetaObject: this=0x7f07cd31b1b0 REGISTERING objectIndex= 0 as "StackViewDelegate_QMLTYPE_148"
      QQmlTypeLoader::getType: QUrl("file:///d/qt/5/kde/qtbase/qml/QtQuick/Controls/StackView.qml") calling load
      QQmlTypeLoader::getType: QUrl("file:///d/qt/5/kde/qtbase/qml/QtQuick/Controls/StackViewDelegate.qml") calling load
      QQmlPropertyCacheCreator::createMetaObject: this=0x7f07cd31a330 REGISTERING objectIndex= 0 as "StackViewDelegate_QMLTYPE_150"
      [....]
      QQmlPropertyValidator::validateObjectBinding: "Cannot assign object to property. StackViewDelegate_QMLTYPE_148 does not inherit from StackViewDelegate_QMLTYPE_150"
      QQmlPropertyValidator::validateObjectBinding: StackViewDelegate_QMLTYPE_148 inherits QObject

      i.e. StackViewDelegate is registered twice, under two different "dynamic class names", and when the assignment happens, the property validator says the two types are incompatible.

      1 Reply Last reply
      0
      • jpnurmiJ Offline
        jpnurmiJ Offline
        jpnurmi
        wrote on last edited by
        #3

        This issue has been fortunately fixed in the upcoming final release of Qt 5.7.0, coming out any day now. It's not yet clear whether there will be a special 5.6.1-1 release, or if 5.6.2 will be released already. In any case, it certainly will be fixed in 5.6.x as well, as soon as possible.

        • https://bugreports.qt.io/browse/QTBUG-53761
        • https://codereview.qt-project.org/#/c/161888/
        jpnurmiJ 1 Reply Last reply
        0
        • jpnurmiJ jpnurmi

          This issue has been fortunately fixed in the upcoming final release of Qt 5.7.0, coming out any day now. It's not yet clear whether there will be a special 5.6.1-1 release, or if 5.6.2 will be released already. In any case, it certainly will be fixed in 5.6.x as well, as soon as possible.

          • https://bugreports.qt.io/browse/QTBUG-53761
          • https://codereview.qt-project.org/#/c/161888/
          jpnurmiJ Offline
          jpnurmiJ Offline
          jpnurmi
          wrote on last edited by
          #4

          @jpnurmi said:

          It's not yet clear whether there will be a special 5.6.1-1 release,

          5.6.1-1 is being prepared and will be made available as soon as the packages are ready: http://lists.qt-project.org/pipermail/releasing/2016-June/004284.html

          1 Reply Last reply
          0
          • D Offline
            D Offline
            DavidFaure
            wrote on last edited by
            #5

            Excellent! Thanks very much for the information. Phew, that was a nasty one.

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved