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

Race on QThreadData::threadId in QMetaObject::activate()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P2: Important
    • 5.9.0 Beta 2
    • 5.8.0, 5.9.0 Alpha
    • Core: Object Model
    • None
    • qtbase dev, clang 3.9.1, libc++, tsan

    Description

      qthread_unix.cpp:338 says data->threadId = to_HANDLE(pthread_self());
      inside QMutexLocker locker(&thr->d_func()->mutex);

      However this is being read without any mutex in QMetaObject::activate, see
      qobject.cpp:3711 :
      const bool receiverInSameThread = currentThreadId == receiver->d_func()>threadData>threadId;

      Found by clang's tsan:

      WARNING: ThreadSanitizer: data race (pid=9143)
        Write of size 8 at 0x7d2000003ec0 by thread T9:
          #0 QThreadPrivate::start(void*) /d/qt/5/kdab/qtbase-dev/src/corelib/thread/qthread_unix.cpp:338:24 (libQt5Core.so.5+0x0000000ffd1c)
      
        Previous read of size 8 at 0x7d2000003ec0 by thread T3:
          #0 QMetaObject::activate(QObject*, int, int, void**) /d/qt/5/kdab/qtbase-dev/src/corelib/kernel/qobject.cpp:3711:98 (libQt5Core.so.5+0x00000063aca0)
          #1 QMetaObject::activate(QObject*, QMetaObject const*, int, void**) /d/qt/5/kdab/qtbase-dev/src/corelib/kernel/qobject.cpp:3627:5 (libQt5Core.so.5+0x00000063a746)
          #2 QDBusConnectionManager::connectionRequested(QDBusConnectionManager::ConnectionRequestData*) /d/qt/5/kdab/qtbase-dev/build/src/dbus/.moc/moc_qdbusconnectionmanager_p.cpp:143:5 (libQt5DBus.so.5+0x0000000ccdf0)
          #3 QDBusConnectionManager::connectToBus(QDBusConnection::BusType, QString const&, bool) /d/qt/5/kdab/qtbase-dev/src/dbus/qdbusconnection.cpp:207:10 (libQt5DBus.so.5+0x0000000197c0)
          #4 QDBusConnectionManager::busConnection(QDBusConnection::BusType) /d/qt/5/kdab/qtbase-dev/src/dbus/qdbusconnection.cpp:116:33 (libQt5DBus.so.5+0x000000019583)
          #5 QDBusConnection::sessionBus() /d/qt/5/kdab/qtbase-dev/src/dbus/qdbusconnection.cpp:1177:42 (libQt5DBus.so.5+0x00000001d8a4)
      

      Attachments

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

        Activity

          People

            thiago Thiago Macieira
            dfaure_kdab David Faure
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes