Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
5.11.1
-
None
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