-
Bug
-
Resolution: Done
-
P1: Critical
-
5.3.0
-
None
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