Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.4.1
-
- Qt 5.4.1 MSVC2013 32 bits
- Windows 8.1 x64
- Multi-screen
-
5f23d4eb103baa21225adb4c3dd666dbefef6515
Description
Consider the following scenario:
- Multi-screen environment
- Qml GridView with a delegate containing an Image element with cache property set to false
- The delegate image source is set to retrieve an image from an image provider
import QtQuick 2.4 import QtQuick.Window 2.2 Window { visible: true GridView { anchors.fill: parent model: ListModel { id: testModel Component.onCompleted: { for(var i = 0; i < 1000; i++) { testModel.append({"id": "item " + i}) } } } delegate: Image { id: img width: 100 height: 100 source: "image://imageprovider/test_" + id cache: false } } }
Steps to Reproduce:
1. Launch app
2. Position the application window through the several screens using WinKey+Left/Right arrow keys
3. The application crashes
Note: Crash occurs with or without a registered image provider.
Stacktrace
0 QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>::data qscopedpointer.h 135 0x54c887fa 1 qGetPtrHelper<QScopedPointer<QObjectData,QScopedPointerDeleter<QObjectData>>> qglobal.h 961 0x54c6cffb 2 QQmlEngine::d_func qqmlengine.h 150 0x54c88763 3 QQmlEngine::imageProvider qqmlengine.cpp 1127 0x54eee0a1 4 QQuickPixmap::load qquickpixmapcache.cpp 1274 0x640cf64c 5 QQuickImageBase::load qquickimagebase.cpp 215 0x642620ac 6 QQuickImageBase::handleScreenChanged qquickimagebase.cpp 292 0x642625ac 7 QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,QtPrivate::List<QScreen *>,void,void (__thiscall QQuickImageBase:: *)(QScreen *)>::call qobjectdefs_impl.h 500 0x642631ae 8 QtPrivate::FunctionPointer<void (__thiscall QQuickImageBase:: *)(QScreen *)>::call<QtPrivate::List<QScreen *>,void> qobjectdefs_impl.h 519 0x64262af8 9 QtPrivate::QSlotObject<void (__thiscall QQuickImageBase:: *)(QScreen *),QtPrivate::List<QScreen *>,void>::impl qobject_impl.h 143 0x642632a5 10 QtPrivate::QSlotObjectBase::call qobject_impl.h 124 0x547acbbf 11 QMetaObject::activate qobject.cpp 3707 0x5479fb0a 12 QMetaObject::activate qobject.cpp 3582 0x5479f611 13 QWindow::screenChanged moc_qwindow.cpp 626 0x552f014b 14 QWindowPrivate::emitScreenChangedRecursion qwindow.cpp 367 0x552f1450 15 QWindowPrivate::setTopLevelScreen qwindow.cpp 389 0x552f139d 16 QGuiApplicationPrivate::processWindowScreenChangedEvent qguiapplication.cpp 2002 0x552de4c3 17 QGuiApplicationPrivate::processWindowSystemEvent qguiapplication.cpp 1600 0x552de5f2 18 QWindowSystemInterface::sendWindowSystemEvents qwindowsysteminterface.cpp 572 0x552c02d1 19 QWindowsGuiEventDispatcher::sendPostedEvents qwindowsguieventdispatcher.cpp 82 0x54276b91 20 qt_internal_proc qeventdispatcher_win.cpp 414 0x547ed000 21 _InternalCallWinProc USER32 0x74dc7834 22 UserCallWinProcCheckWow USER32 0x74dc7a9a 23 DispatchMessageWorker USER32 0x74dc988e 24 DispatchMessageW USER32 0x74dc98f1 25 QEventDispatcherWin32::processEvents qeventdispatcher_win.cpp 807 0x547edb4e 26 QWindowsGuiEventDispatcher::processEvents qwindowsguieventdispatcher.cpp 73 0x54276aac 27 QEventLoop::processEvents qeventloop.cpp 129 0x54750e5c 28 QEventLoop::exec qeventloop.cpp 204 0x54751062 29 QCoreApplication::exec qcoreapplication.cpp 1188 0x547535e2 30 QGuiApplication::exec qguiapplication.cpp 1508 0x552daf08 31 main main.cpp 38 0x852658 32 WinMain qtmain_win.cpp 112 0x8556cd 33 __tmainCRTStartup crtexe.c 618 0x854abf 34 WinMainCRTStartup crtexe.c 466 0x85487d 35 BaseThreadInitThunk KERNEL32 0x76cd919f 36 __RtlUserThreadStart ntdll_770c0000 0x7711ad1f 37 _RtlUserThreadStart ntdll_770c0000 0x7711acea