Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
Qt Creator 4.8.2
-
-
a535196c418a7054c2fb1524ff1df9afb0961166
Description
When hitting a breakpoint, we can right click on a C++ stack trace and do "Load QML Stack", which supposedly will decorate it with QML files and line numbers
On Linux/gdb nothing happens.
On Windows/cdb the debug logger says it crashed:
<!qtcreatorcdbext.qmlstack kp 15 Child-SP RetAddr Call Site 00000012`6410db70 00007ff6`554c6ead basic_qml_cpp!NS::Controller::printTrace(void)+0x42 [c:\d\sources\samples\test-cases\qt\qml\basic-qml-cpp\controller.h @ 131] 00000012`6410dbf0 00007ff6`554c644c basic_qml_cpp!NS::Controller::myObject(void)+0x1d [c:\d\sources\samples\test-cases\qt\qml\basic-qml-cpp\controller.h @ 124] 00000012`6410dc40 00007ff8`43e0c237 basic_qml_cpp!NS::Controller::qt_static_metacall(class QObject * _o = 0x00000012`6410f8c0, QMetaObject::Call _c = ReadProperty (0n1), int _id = 0n2, void ** _a = 0x00000012`6410dd30)+0x3fc [c:\d\sources\samples\test-cases\qt\qml\build-basic-qml-cpp-qt_5_11_2015_installer-debug\debug\moc_controller.cpp @ 394] 00000012`6410dcd0 00007ff8`43e0c1ca Qt5Qmld!QQmlPropertyData::readPropertyWithArgs(class QObject * target = 0x00000012`6410f8c0, void ** args = 0x00000012`6410dd30)+0x57 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlpropertycache_p.h @ 334] 00000012`6410dd10 00007ff8`43e00b05 Qt5Qmld!QQmlPropertyData::readProperty(class QObject * target = 0x00000012`6410f8c0, void * property = 0x00000012`6410dde0)+0x3a [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlpropertycache_p.h @ 329] 00000012`6410dd50 00007ff8`43dfbbaa Qt5Qmld!loadProperty(struct QV4::ExecutionEngine * v4 = 0x00000153`5e521180, class QObject * object = 0x00000012`6410f8c0, class QQmlPropertyData * property = 0x00000153`5e6c5348)+0x95 [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4qobjectwrapper.cpp @ 131] 00000012`6410df60 00007ff8`43dfad0a Qt5Qmld!QV4::QObjectWrapper::getProperty(struct QV4::ExecutionEngine * engine = 0x00000153`5e521180, class QObject * object = 0x00000012`6410f8c0, class QQmlPropertyData * property = 0x00000153`5e6c5348, bool captureRequired = true)+0x37a [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4qobjectwrapper.cpp @ 264] 00000012`6410e000 00007ff8`43dfd53a Qt5Qmld!QV4::QObjectWrapper::getQmlProperty(class QQmlContextData * qmlContext = 0x00000153`5e6b26f0, struct QV4::String * name = 0x00000153`688c1410, QV4::QObjectWrapper::RevisionMode revisionMode = IgnoreRevision (0n0), bool * hasProperty = 0x00000000`00000000, bool includeImports = true)+0x46a [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4qobjectwrapper.cpp @ 328] 00000012`6410e0d0 00007ff8`43b7878f Qt5Qmld!QV4::QObjectWrapper::get(struct QV4::Managed * m = 0x00000153`688c1418, struct QV4::String * name = 0x00000153`688c1410, bool * hasProperty = 0x00000000`00000000)+0x5a [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4qobjectwrapper.cpp @ 695] 00000012`6410e120 00007ff8`43e3062c Qt5Qmld!QV4::Object::get(struct QV4::String * name = 0x00000153`688c1410, bool * hasProperty = 0x00000000`00000000)+0x2f [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4object_p.h @ 364] 00000012`6410e150 00007ff8`43e1aa58 Qt5Qmld!QV4::Runtime::method_loadProperty(struct QV4::ExecutionEngine * engine = 0x00000153`5e521180, struct QV4::Value * object = 0x00000153`688c1360, int nameIndex = 0n45)+0xac [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4runtime.cpp @ 728] 00000012`6410e250 00007ff8`43b75703 Qt5Qmld!QV4::Moth::VME::exec(struct QV4::FunctionObject * fo = 0x00000000`00000000, struct QV4::Value * thisObject = 0x00000153`688c1340, struct QV4::Value * argv = 0x00000153`688c1350, int argc = 0n0)+0x1a48 [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4vme_moth.cpp @ 720] 00000012`6410ef10 00007ff8`43b6e8fb Qt5Qmld!QV4::Moth::VME::exec(struct QV4::Function * v4Function = 0x00000153`5e6b3c90, struct QV4::Value * thisObject = 0x00000153`688c1340, struct QV4::Value * argv = 0x00000153`688c1350, int argc = 0n0, struct QV4::ExecutionContext * context = 0x00000153`5e100048)+0x53 [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4vme_moth_p.h @ 73] 00000012`6410ef60 00007ff8`43f873f6 Qt5Qmld!QV4::Function::call(struct QV4::Value * thisObject = 0x00000153`688c1340, struct QV4::Value * argv = 0x00000153`688c1350, int argc = 0n0, struct QV4::ExecutionContext * context = 0x00000153`5e100048)+0x3b [c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4function_p.h @ 73] 00000012`6410efa0 00007ff8`43f94e74 Qt5Qmld!QQmlJavaScriptExpression::evaluate(struct QV4::CallData * callData = 0x00000153`688c1328, bool * isUndefined = 0x00000012`6410f1d0)+0x2e6 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmljavascriptexpression.cpp @ 217] 00000012`6410f100 00007ff8`43f97c1e Qt5Qmld!QQmlBinding::evaluate(bool * isUndefined = 0x00000012`6410f1d0)+0x114 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlbinding.cpp @ 209] 00000012`6410f1b0 00007ff8`43f938b6 Qt5Qmld!QQmlNonbindingBinding::doUpdate(class QQmlJavaScriptExpression::DeleteWatcher * watcher = 0x00000012`6410f298, class QFlags<enum QQmlPropertyData::WriteFlag> flags = class QFlags<enum QQmlPropertyData::WriteFlag>, struct QV4::Scope * scope = 0x00000012`6410f288)+0x4e [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlbinding.cpp @ 245] 00000012`6410f230 00007ff8`43f9364f Qt5Qmld!QQmlBinding::update(class QFlags<enum QQmlPropertyData::WriteFlag> flags = class QFlags<enum QQmlPropertyData::WriteFlag>)+0x216 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlbinding.cpp @ 187] 00000012`6410f2e0 00007ff8`43faa4c5 Qt5Qmld!QQmlBinding::setEnabled(bool e = true, class QFlags<enum QQmlPropertyData::WriteFlag> flags = class QFlags<enum QQmlPropertyData::WriteFlag>)+0xef [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlbinding.cpp @ 549] 00000012`6410f320 00007ff8`43eba193 Qt5Qmld!QQmlObjectCreator::finalize(class QQmlInstantiationInterrupt * interrupt = 0x00000012`6410f448)+0x1f5 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlobjectcreator.cpp @ 1348] 00000012`6410f420 00007ff8`43eb9647 Qt5Qmld!QQmlComponentPrivate::complete(class QQmlEnginePrivate * enginePriv = 0x00000153`5e51bfc0, struct QQmlComponentPrivate::ConstructionState * state = 0x00000153`5e607400)+0x43 [c:\users\qt\work\qt\qtdeclarative\src\qml\qml\qqmlcomponent.cpp @ 926] .call Qt5Qmld!qt_v4StackTrace(0x1535e521180) Thread is set up for call, 'g' will execute. WARNING: This can have serious side-effects, including deadlocks and corruption of the debuggee. ~. gh System 0: 10 of 11 threads are frozen (23e0.206c): Access violation - code c0000005 (first chance) System 0: 10 of 11 threads were frozen s sException at 0x7ff843b751f3, code: 0xc0000005: read access violation at: 0x8, flags=0x0 (first chance) at c:\users\qt\work\qt\qtdeclarative\src\qml\jsruntime\qv4managed_p.h:204 First chance exceptions are reported before any exception handling. This exception may be expected and handled. eERROR: Unable to obtain QML stack trace: No stack returned Ignored stop notification from function call (exception).
To reproduce:
Run the attached test-case, set a breakpoint in controller.h cppMethod().
Clicking on the yellow background will call the C++ method, and cdb will break.
Try "Load QML Stack"