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

App hangs when Loader and Label are repeatedly updated in two windows 9 out of 10 times

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P3: Somewhat important
    • 5.12.1
    • 5.11.1
    • None
    • macOS

    Description

      Precondition:

      • two windows are shown: windowA, windowB
      • windowA contains Loader component
      • windowB contains Label component
      • App built in release

      Steps to reproduce:

      • repeatedly toggle "active" property of Loader in windowA
      • at the same time repeatedly change text in Label on windowB

      Observed:

      • after some time (0.2min - 2min) application hangs
      • both windows become unresponsive
      • looks like application is in a permanent wait()

      Occurrence: 9/10

      Additional observations:

      • couldn't reproduce the issue with qmlscene
      • couldn't reproduce the issue if Loader in windowA is activated only once and stays active or is not activated at all
      • couldn't reproduce the issue if both Loader and Label are in one window
      • couldn't reproduce the issue without changing text property of Label
      • Issue is similar to https://bugreports.qt.io/browse/QTBUG-42162
      • The issue is not reproducible with Qt 5.12.1

      Attachments:

      • freeze.tar.gz containing qmake project - build it, run and wait (properties are being updated based on timer events). It usually takes me ~2 minutes to reproduce. Sometimes reproduces instantly.
      • qtdiag.txt - output of qtdiag
      • backtrace.txt - output of 'thread backtrace all' lldb command

      Main thread stack trace:

      * frame #0: 0x00007fff79a9e1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
          frame #1: 0x00007fff79b575cb libsystem_pthread.dylib`_pthread_cond_wait + 724
          frame #2: 0x00000001009abc7b QtCore`QWaitConditionPrivate::wait(unsigned long) + 75
          frame #3: 0x00000001009abc12 QtCore`QWaitCondition::wait(QMutex*, unsigned long) + 162
          frame #4: 0x00000001001a71a9 QtQuick`QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool) + 1481
          frame #5: 0x00000001001a7922 QtQuick`QSGThreadedRenderLoop::handleUpdateRequest(QQuickWindow*) + 178
          frame #6: 0x00000001001ffd03 QtQuick`QQuickWindow::event(QEvent*) + 707
          frame #7: 0x0000000100b5b8e8 QtCore`QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) + 88
          frame #8: 0x0000000100b5b5fd QtCore`QCoreApplication::notify(QObject*, QEvent*) + 45
          frame #9: 0x0000000100b5b54f QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 159
          frame #10: 0x0000000100f5bb82 QtGui`QWindow::event(QEvent*) + 194
          frame #11: 0x00000001001ffb47 QtQuick`QQuickWindow::event(QEvent*) + 263
          frame #12: 0x0000000100b5b8e8 QtCore`QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) + 88
          frame #13: 0x0000000100b5b5fd QtCore`QCoreApplication::notify(QObject*, QEvent*) + 45
          frame #14: 0x0000000100b5b54f QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 159
          frame #15: 0x0000000100bb319a QtCore`QTimerInfoList::activateTimers() + 890
          frame #16: 0x000000010528cdb2 libqcocoa.dylib`QCocoaEventDispatcherPrivate::activateTimersSourceCallback(void*) + 18
          frame #17: 0x00007fff4c8ea405 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
          frame #18: 0x00007fff4c8ea3ab CoreFoundation`__CFRunLoopDoSource0 + 108
          frame #19: 0x00007fff4c8cde51 CoreFoundation`__CFRunLoopDoSources0 + 195
          frame #20: 0x00007fff4c8cd3fa CoreFoundation`__CFRunLoopRun + 1219
          frame #21: 0x00007fff4c8ccce4 CoreFoundation`CFRunLoopRunSpecific + 463
          frame #22: 0x00007fff4bb66895 HIToolbox`RunCurrentEventLoopInMode + 293
          frame #23: 0x00007fff4bb665cb HIToolbox`ReceiveNextEventCommon + 618
          frame #24: 0x00007fff4bb66348 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 64
          frame #25: 0x00007fff49e2395b AppKit`_DPSNextEvent + 997
          frame #26: 0x00007fff49e226fa AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1362
          frame #27: 0x00007fff49e1c75d AppKit`-[NSApplication run] + 699
          frame #28: 0x000000010528da8d libqcocoa.dylib`QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2397
          frame #29: 0x0000000100b570a2 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 418
          frame #30: 0x0000000100b5bc62 QtCore`QCoreApplication::exec() + 402
          frame #31: 0x0000000100003c8c 2shades`main + 204
          frame #32: 0x00007fff79962085 libdyld.dylib`start + 1 

      Attachments

        1. backtrace.txt
          8 kB
        2. freeze.tar.gz
          0.8 kB
        3. qtdiag.txt
          5 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            vestbo Tor Arne Vestbø
            diredko diredko
            Votes:
            3 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes