Uploaded image for project: 'Qt Creator'
  1. Qt Creator
  2. QTCREATORBUG-22209

"Load QML Stack" isn't working

    XMLWordPrintable

Details

    • Linux/X11, Windows
    • 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"

      Attachments

        For Gerrit Dashboard: QTCREATORBUG-22209
        # Subject Branch Project Status CR V

        Activity

          People

            davschul David Schulz
            iamsergio Sergio Martins
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes