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

crash when connecting with RDP

    XMLWordPrintable

Details

    • Windows

    Description

      There is crash with simple example when using Remote desktop. 
      Attached is a sample testcase.
      To reproduce you need 2 computers:
      1. Connect to remote computer with remote desktop (RDP)
      2. Execute the attached test application on the remote computer
      (the testcase opens 10 top level maximized windows with sample widget - QScrollBar)
      3. Disconnect RDP
      4. Reconnect RDP and see the application crashed

      The crash is caused by corrupted list of QScreens caused by nested processing of QtWindows::SettingChangedEvent (WM_SETTINGCHANGE) events. Following are stack trace.

      1 QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>::get qscopedpointer.h 111 0x7ffd2362baeb2 qGetPtrHelper<QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>> const> qtclasshelpermacros.h 79 0x7ffd236219f43 QScreen::d_func qscreen.h 34 0x7ffd2362818b4 QScreen::handle qscreen.cpp 123 0x7ffd238682b45 QWindowsStylePrivate::nativeMetricScaleFactor qwindowsstyle.cpp 361 0x7ffd25070a336 QWindowsStyle::pixelMetric qwindowsstyle.cpp 385 0x7ffd2506f4cb7 QWindowsVistaStyle::pixelMetric qwindowsvistastyle.cpp 4627 0x7ffd5838c78c8 QScrollBar::sizeHint qscrollbar.cpp 414 0x7ffd252889809 QWidgetItemV2::updateCacheIfNecessary qlayoutitem.cpp 728 0x7ffd24e7bb6810 QWidgetItemV2::minimumSize qlayoutitem.cpp 803 0x7ffd24e7b88811 QDockAreaLayout::size_helper<QSize (__cdecl QDockAreaLayoutInfo:: *)(void)const ,QSize (__cdecl QLayoutItem:: *)(void)const> qdockarealayout.cpp 3018 0x7ffd2514f6ea12 QDockAreaLayout::minimumSize qdockarealayout.cpp 3058 0x7ffd2514081c13 QMainWindowLayoutState::minimumSize qmainwindowlayout.cpp 806 0x7ffd251d1f3414 QMainWindowLayout::minimumSize qmainwindowlayout.cpp 2376 0x7ffd251d78fd15 QLayout::totalMinimumSize qlayout.cpp 634 0x7ffd24e7013616 QLayout::activate qlayout.cpp 1035 0x7ffd24e6f13517 QLayout::widgetEvent qlayout.cpp 554 0x7ffd24e70d1318 QApplicationPrivate::notify_helper qapplication.cpp 3285 0x7ffd24dbfaf919 QApplication::notify qapplication.cpp 3238 0x7ffd24dbd05320 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1127 0x7ffd2285619721 QCoreApplication::sendEvent qcoreapplication.cpp 1546 0x7ffd228537fb22 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1907 0x7ffd2285881223 QEventDispatcherWin32::sendPostedEvents qeventdispatcher_win.cpp 894 0x7ffd22c99bcf24 QWindowsGuiEventDispatcher::sendPostedEvents qwindowsguieventdispatcher.cpp 44 0x7ffd23f0ccc525 QEventDispatcherWin32::processEvents qeventdispatcher_win.cpp 464 0x7ffd22c97ecf26 QWindowsGuiEventDispatcher::processEvents qwindowsguieventdispatcher.cpp 36 0x7ffd23f0cc7b27 QCoreApplication::processEvents qcoreapplication.cpp 1357 0x7ffd2285366c28 QGuiApplication::sync qguiapplication.cpp 4058 0x7ffd2377a7d429 <lambda_1f45b0661a60826bda3fbddad0e17018>::operator() mainwindow.cpp 25 0x7ff747dd1d4530 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,QtPrivate::List<QScreen *>,void,<lambda_1f45b0661a60826bda3fbddad0e17018>>::call qobjectdefs_impl.h 129 0x7ff747dd1ece31 QtPrivate::Functor<<lambda_1f45b0661a60826bda3fbddad0e17018>,1>::call<QtPrivate::List<QScreen *>,void> qobjectdefs_impl.h 244 0x7ff747dd201332 QtPrivate::QFunctorSlotObject<<lambda_1f45b0661a60826bda3fbddad0e17018>,1,QtPrivate::List<QScreen *>,void>::impl qobjectdefs_impl.h 463 0x7ff747dd1dde33 QtPrivate::QSlotObjectBase::call qobjectdefs_impl.h 374 0x7ffd2289381334 doActivate<0> qobject.cpp 4063 0x7ffd2292e58035 QMetaObject::activate qobject.cpp 4124 0x7ffd22915e9836 QWindow::screenChanged moc_qwindow.cpp 1108 0x7ffd2388554737 QWindowPrivate::emitScreenChangedRecursion qwindow.cpp 470 0x7ffd238890ef38 QWindowPrivate::setTopLevelScreen qwindow.cpp 495 0x7ffd23888ff939 QWindow::setScreen qwindow.cpp 2129 0x7ffd2388363940 QScreen::~QScreen qscreen.cpp 111 0x7ffd2386824641 QScreen::`vector deleting destructor' Qt6Guid 0x7ffd2386d74742 QWindowSystemInterface::handleScreenRemoved qwindowsysteminterface.cpp 766 0x7ffd2389358043 QWindowsScreenManager::removeScreen qwindowsscreen.cpp 789 0x7ffd4bd3b14844 QWindowsScreenManager::handleScreenChanges qwindowsscreen.cpp 822 0x7ffd4bd3aa5c45 qDisplayChangeObserverWndProc qwindowsscreen.cpp 685 0x7ffd4bd3ddfd46 CallWindowProcW USER32 0x7ffd97b2ef5c47 DispatchMessageW USER32 0x7ffd97b2e8cc48 IsWindowRedirectedForPrint USER32 0x7ffd97b4766049 KiUserCallbackDispatcher ntdll 0x7ffd9937137450 NtUserPeekMessage win32u 0x7ffd96fe106451 PeekMessageW USER32 0x7ffd97b2a33352 PeekMessageW USER32 0x7ffd97b2a29353 QEventDispatcherWin32::processEvents qeventdispatcher_win.cpp 481 0x7ffd22c9804a54 QWindowsGuiEventDispatcher::processEvents qwindowsguieventdispatcher.cpp 36 0x7ffd23f0cc7b55 QEventLoop::processEvents qeventloop.cpp 101 0x7ffd22879c4c56 QEventLoop::exec qeventloop.cpp 182 0x7ffd22879f3457 QCoreApplication::exec qcoreapplication.cpp 1448 0x7ffd2285359a58 QGuiApplication::exec qguiapplication.cpp 1927 0x7ffd2377a1ca59 QApplication::exec qapplication.cpp 2570 0x7ffd24db9cec60 main main.cpp 13 0x7ff747dd1aad61 qtEntryPoint qtentrypoint_win.cpp 45 0x7ff747dd6d4a62 WinMain qtentrypoint_win.cpp 64 0x7ff747dd6bfe63 invoke_main exe_common.inl 107 0x7ff747dd2f8264 __scrt_common_main_seh exe_common.inl 288 0x7ff747dd2e2e65 __scrt_common_main exe_common.inl 331 0x7ff747dd2cee66 WinMainCRTStartup exe_winmain.cpp 17 0x7ff747dd301e67 BaseThreadInitThunk KERNEL32 0x7ffd9743737468 RtlUserThreadStart ntdll 0x7ffd9931cc91 

      This also crash with Qt6.8.2 but not always reproducible.

       

       

      Attachments

        1. qtbug135337.zip
          1.34 MB
          Irfan Omair
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            irfan.omair@digia.com Irfan Omair
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes