- 
    
Bug
 - 
    Resolution: Done
 - 
    
P2: Important
 - 
    5.13.2
 - 
    None
 
- 
        
 - 
        6c23f006e07b774b0eef863cccd36a992274ca32 (qt/qtbase/5.14.1) afb32895485e37099e9a297ab093b5e08905a271 (qt/qtbase/5.12)
 
I do not have reproducable example, just a crash report, when my app crashed at user site with call stack
error access violation at line 1884 using msvc2017-64 compiler
I found the source
void QWindowsWindow::checkForScreenChanged(ScreenChangeMode mode)
{
    if (parent() || QWindowsScreenManager::isSingleScreen())
        return;
    QPlatformScreen *currentScreen = screen();
    const QWindowsScreen *newScreen =
        QWindowsContext::instance()->screenManager().screenForHwnd(m_data.hwnd);
    if (newScreen == nullptr || newScreen == currentScreen)
        return;
    // For screens with different DPI: postpone until WM_DPICHANGE
    if (mode == FromGeometryChange
     *   && !equalDpi(currentScreen->logicalDpi(), newScreen->logicalDpi())) { // the error happend here*
        return;
    }
    qCDebug(lcQpaWindows).noquote().nospace() << __FUNCTION__
        << ' ' << window() << " \"" << currentScreen->name()
        << "\"->\"" << newScreen->name() << '"';
    if (mode == FromGeometryChange)
        setFlag(SynchronousGeometryChangeEvent);
    updateFullFrameMargins();
    QWindowSystemInterface::handleWindowScreenChanged(window(), newScreen->screen());
}
the stack
qwindows!QWindowsWindow::checkForScreenChanged 1884 c:\users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowswindow.cpp qwindows!QWindowsWindow::handleGeometryChange 1917 c:\users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowswindow.cpp qwindows!QWindowsContext::windowsProc 1217 c:\users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowscontext.cpp qwindows!qWindowsWndProc 1594 c:\users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowscontext.cpp USER32!UserCallWinProcCheckWow USER32!SendMessageWorker USER32!RealDefWindowProcWorker USER32!RealDefWindowProcW UxTheme!_ThemeDefWindowProc 1096 shell\themes\uxtheme\sethook.cpp UxTheme!ThemeDefWindowProcW 1110 shell\themes\uxtheme\sethook.cpp USER32!DefWindowProcW qwindows!qWindowsWndProc 1603 c:\users\qt\work\qt\qtbase\src\plugins\platforms\windows\qwindowscontext.cpp USER32!UserCallWinProcCheckWow USER32!DispatchClientMessage USER32!_fnINLPWINDOWPOS ntdll!KiUserCallbackDispatcherContinue win32u!NtUserPeekMessage USER32!_PeekMessage USER32!PeekMessageW Qt5Core!QEventDispatcherWin32::processEvents 587 c:\users\qt\work\qt\qtbase\src\corelib\kernel\qeventdispatcher_win.cpp qwindows!QWindowsGuiEventDispatcher::processEvents 75 c:\users\qt\work\qt\qtbase\src\platformsupport\eventdispatchers\qwindowsguieventdispatcher.cpp Qt5Core!QEventLoop::processEvents 138 c:\users\qt\work\qt\qtbase\src\corelib\kernel\qeventloop.cpp Qt5Core!QEventLoop::exec 225 c:\users\qt\work\qt\qtbase\src\corelib\kernel\qeventloop.cpp Qt5Core!QCoreApplication::exec 1403 c:\users\qt\work\qt\qtbase\src\corelib\kernel\qcoreapplication.cpp eyeblink!main 172 c:\git\eyeblink\sources\main.cpp eyeblink!WinMain 97 c:\users\qt\work\qt\qtbase\src\winmain\qtmain_win.cpp eyeblink!invoke_main 102 f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl eyeblink!__scrt_common_main_seh 288 f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl KERNEL32!BaseThreadInitThunk ntdll!RtlUserThreadStart
- is duplicated by
 - 
                    
QTBUG-81359 QWindowsWindow::checkForScreenChanged exception when disconnecting screen
-         
 - Closed
 
 -         
 
| For Gerrit Dashboard: QTBUG-80436 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V | 
| 287230,2 | Windows QPA: Prospective fix for crash occurring when changing screen during session lock | 5.14.1 | qt/qtbase | Status: MERGED | +2 | 0 | 
| 295414,2 | Windows QPA: Prospective fix for crash occurring when changing screen during session lock | 5.12 | qt/qtbase | Status: MERGED | +2 | 0 |