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

        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