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

Iterating over a large list of objects in QML crashes during the iteration

XMLWordPrintable

      With the attached example, it will create 2 million items in C++ and then iterate over them in JS on the QML side. Once it has gone past about 1 million objects then it will crash with the following stack trace:

       	ntdll.dll!779be3be()	Unknown
       	[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
       	ntdll.dll!779be023()	Unknown
       	kernel32.dll!767c14ad()	Unknown
      >	msvcr110d.dll!_free_base(void * pBlock) Line 50	C
       	msvcr110d.dll!_free_dbg_nolock(void * pUserData, int nBlockUse) Line 1431	C++
       	msvcr110d.dll!_free_dbg(void * pUserData, int nBlockUse) Line 1265	C++
       	msvcr110d.dll!free(void * pUserData) Line 49	C++
       	Qt5Cored.dll!QArrayData::deallocate(QArrayData * data, unsigned int objectSize, unsigned int alignment) Line 130	C++
       	Qt5Cored.dll!QTypedArrayData<unsigned short>::deallocate(QArrayData * data) Line 234	C++
       	Qt5Cored.dll!QString::~QString() Line 995	C++
       	Qt5Cored.dll!QString::vsprintf(const char * cformat, char * ap) Line 6068	C++
       	Qt5Cored.dll!qt_message(QtMsgType msgType, const QMessageLogContext & context, const char * msg, char * ap, QString & buf) Line 248	C++
       	Qt5Cored.dll!QMessageLogger::fatal(const char * msg, ...) Line 666	C++
       	Qt5Cored.dll!qt_assert(const char * assertion, const char * file, int line) Line 2124	C++
       	Qt5Qmld.dll!QV4::MemoryManager::mark() Line 311	C++
       	Qt5Qmld.dll!QV4::MemoryManager::runGC() Line 440	C++
       	Qt5Qmld.dll!QV4::MemoryManager::alloc(unsigned int size) Line 207	C++
       	Qt5Qmld.dll!QV4::MemoryManager::allocManaged(unsigned int size) Line 102	C++
       	Qt5Qmld.dll!QV4::Managed::operator new(unsigned int size, QV4::MemoryManager * mm) Line 70	C++
       	Qt5Qmld.dll!QV4::QObjectMethod::create(QV4::ExecutionContext * scope, QObject * object, int index, const QV4::ValueRef qmlGlobal) Line 1742	C++
       	Qt5Qmld.dll!QV4::QObjectWrapper::getProperty(QObject * object, QV4::ExecutionContext * ctx, QQmlPropertyData * property, bool captureRequired) Line 360	C++
       	Qt5Qmld.dll!QV4::QObjectWrapper::getQmlProperty(QV4::ExecutionContext * ctx, QQmlContextData * qmlContext, QV4::String * n, QV4::QObjectWrapper::RevisionMode revisionMode, bool * hasProperty, bool includeImports) Line 333	C++
       	Qt5Qmld.dll!QV4::QObjectWrapper::get(QV4::Managed * m, const QV4::StringRef name, bool * hasProperty) Line 673	C++
       	Qt5Qmld.dll!QV4::Object::get(const QV4::StringRef name, bool * hasProperty) Line 244	C++
       	Qt5Qmld.dll!QV4::Runtime::callProperty(QV4::ExecutionContext * context, const QV4::StringRef name, QV4::CallDataRef callData) Line 932	C++
       	00430b7a()	Unknown
       	Qt5Qmld.dll!QV4::SimpleScriptFunction::call(QV4::Managed * that, QV4::CallData * callData) Line 529	C++
       	Qt5Qmld.dll!QV4::Object::call(QV4::CallData * d) Line 270	C++
       	Qt5Qmld.dll!QJSValue::call(const QList<QJSValue> & args) Line 540	C++
       	qml_test.exe!Script::run() Line 14	C++
       	qml_test.exe!main(int argc, char * * argv) Line 88	C++
       	qml_test.exe!__tmainCRTStartup() Line 536	C
       	qml_test.exe!mainCRTStartup() Line 377	C
       	kernel32.dll!767c338a()	Unknown
       	ntdll.dll!779cbf32()	Unknown
       	ntdll.dll!779cbf05()	Unknown
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            shausman Simon Hausmann
            andysh Andy Shaw
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved:

                There are no open Gerrit changes