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

Deadlock in Qt3D QML application

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 5.14.2, 5.15.0
    • Qt3D
    • None
    • Ubuntu 20.04, Ubuntu 18.04
    • Linux/X11

    Description

      Main thread gets blocked during Qt3D initialization if I have a thread from the global thread pool started using QtConcurrent::run. It doesn't happen if I use separate thread pool.

      Can be reproduced with any qml qt3d example, for example simple-qml.  The same code works fine with Qt 5.12.4

       

      #include <Qt3DQuickExtras/qt3dquickwindow.h>
      #include <QGuiApplication>
      #include <QtConcurrent>
      int main(int argc, char* argv[])
      {    
          QGuiApplication app(argc, argv);
          Qt3DExtras::Quick::Qt3DQuickWindow view;
          view.setSource(QUrl("qrc:/main.qml"));
      
          //works fine
          QThreadPool p;
          QtConcurrent::run(&p,[](){while(true){QThread::sleep(1);qDebug()<<"Thread 1";}});
      
          //Causes main thread lock
          QtConcurrent::run([](){while(true){QThread::sleep(1);qDebug()<<"Thread 2";}});
      
          view.show();
          return app.exec();
      }
      

       

      Backtrace

      1 futex_wait_cancelable futex-internal.h 183 0x7ffff400c376
      2 __pthread_cond_wait_common pthread_cond_wait.c 508 0x7ffff400c376
      3 __pthread_cond_wait pthread_cond_wait.c 638 0x7ffff400c376
      4 QWaitCondition::wait(QMutex *, QDeadlineTimer) 0x7ffff66ccd23
      5 QFutureInterfaceBase::waitForFinished() 0x7ffff66ce8de
      6 Qt3DCore::QAspectJobManager::waitForPerThreadFunction(void ( *)(void *), void *) 0x7ffff51ec94f
      7 Qt3DCore::QAspectManager::initialize() 0x7ffff51e52aa
      8 Qt3DCore::QAspectEnginePrivate::initialize() 0x7ffff51e0643
      9 Qt3DCore::QAspectEngine::setRootEntity(QSharedPointer<Qt3DCore::QEntity>) 0x7ffff51e2535
      10 Qt3DCore::Quick::QQmlAspectEnginePrivate::_q_continueExecute() 0x7ffff5ac037f
      11 Qt3DCore::Quick::QQmlAspectEngine::setSource(QUrl const&) 0x7ffff5ac0518
      12 Qt3DExtras::Quick::Qt3DQuickWindow::showEvent(QShowEvent *) 0x7ffff7dc1769
      13 QWindow::event(QEvent *) 0x7ffff75fcdcb
      14 QCoreApplication::notifyInternal2(QObject *, QEvent *) 0x7ffff68ad8f8
      15 QWindowPrivate::setVisible(bool) 0x7ffff75fcad8
      16 main main.cpp 67 0x555555556b4d

       

      Attachments

        1. backtrace.txt
          39 kB
        2. Backtrace 1.txt
          133 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            seanharmer Sean Harmer
            stepanove Evgenii Stepanov
            Votes:
            2 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes