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

Thread safety issue with QQmlPropertyMap & QMetaObject::invokeMethod

    XMLWordPrintable

    Details

    • Commits:
      38bac80aea1c2bd58acb10000e9a3daa65bba503 (qt/qtdeclarative/5.12)

      Description

      I'm trying to use QMetaObject::invokeMethod with QueuedConnection to safely pass control from one thread to another. If invokeMethod (on a secondary thread) happens simultaneously with QQmlPropertyMap::insert (on main thread), Qt may crash. There seems to be no locking around the code which modifies the QMetaObject.

      If it's not fixable, then it should at least be documented what conditions need to be met in order to safely use invokeMethod with QueuedConnection from a different thread.

      Minimal test-case attached.

        Attachments

        1. metabug.cpp
          0.8 kB
          Andrzej Szombierski
        For Gerrit Dashboard: QTBUG-70915
        # Subject Branch Project Status CR V

          Activity

            People

            Assignee:
            vhilshei Volker Hilsheimer
            Reporter:
            anszom Andrzej Szombierski
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Gerrit Reviews

                There are no open Gerrit changes