Uploaded image for project: 'Qbs ("Cubes")'
  1. Qbs ("Cubes")
  2. QBS-452

Crash when attempting to get the value of a property when the module name contains invalid characters

    XMLWordPrintable

Details

    • Task
    • Resolution: Done
    • P1: Critical
    • 1.1.1
    • None
    • General
    • None
    • 93564d323514a96f6e848825e5336beff2410d2d 7cd6a4d78fabcec0197fb62b5a1458f3d9916fd8

    Description

      I tried to do this in a Rule and got a crash:

      input.moduleProperty("Qt.core", "libPath")
      

      Looks like it's due to that period in the module name; there's an assert. Stack trace:

      * thread #6: tid = 0x3af0747, 0x00007fff92331866 libsystem_kernel.dylib`__pthread_kill + 10, name = 'QThread, stop reason = signal SIGABRT
          frame #0: 0x00007fff92331866 libsystem_kernel.dylib`__pthread_kill + 10
          frame #1: 0x00007fff8bfd135c libsystem_pthread.dylib`pthread_kill + 92
          frame #2: 0x00007fff95ce5bba libsystem_c.dylib`abort + 125
          frame #3: 0x00007fff8fe3e141 libc++abi.dylib`abort_message + 257
          frame #4: 0x00007fff8fe63abc libc++abi.dylib`default_terminate_handler() + 264
          frame #5: 0x00007fff95a31322 libobjc.A.dylib`_objc_terminate() + 124
          frame #6: 0x00007fff8fe613e1 libc++abi.dylib`std::__terminate(void (*)()) + 8
          frame #7: 0x00007fff8fe60e6b libc++abi.dylib`__cxa_throw + 124
          frame #8: 0x000000010027b6ad libqbscore.1.2.0.dylib`qbs::Internal::throwAssertLocation(condition=0x00000001002e93dc, file=0x00000001002e9403, line=58) + 285 at qbsassert.cpp:46
          frame #9: 0x00000001001623ce libqbscore.1.2.0.dylib`qbs::Internal::Property::Property(this=0x0000000103613288, m=0x0000000103613338, p=0x0000000103613328, v=0x0000000103613310, k=PropertyInModule) + 302 at property.h:58
          frame #10: 0x0000000100161445 libqbscore.1.2.0.dylib`qbs::Internal::Property::Property(this=0x0000000103613288, m=0x0000000103613338, p=0x0000000103613328, v=0x0000000103613310, k=PropertyInModule) + 53 at property.h:59
          frame #11: 0x0000000100171316 libqbscore.1.2.0.dylib`qbs::Internal::ModuleProperties::moduleProperties(context=0x00000001036261b8, engine=0x0000000102f201e0, oneValue=true) + 2614 at moduleproperties.cpp:124
          frame #12: 0x0000000100170849 libqbscore.1.2.0.dylib`qbs::Internal::ModuleProperties::js_moduleProperty(context=0x00000001036261b8, engine=0x0000000102f201e0) + 41 at moduleproperties.cpp:78
          frame #13: 0x0000000100ccc425 QtScript`QScript::FunctionWrapper::proxyCall(QTJSC::ExecState*, QTJSC::JSObject*, QTJSC::JSValue, QTJSC::ArgList const&) + 197
          frame #14: 0x0000000100c3e69f QtScript`QTJSC::NativeFuncWrapper::operator()(QTJSC::ExecState*, QTJSC::JSObject*, QTJSC::JSValue, QTJSC::ArgList const&) const + 111
          frame #15: 0x0000000100c24429 QtScript`cti_op_call_NotJSFunction + 217
          frame #16: 0x000057377a611b17
          frame #17: 0x0000000100befb5e QtScript`QTJSC::Interpreter::execute(QTJSC::EvalExecutable*, QTJSC::ExecState*, QTJSC::JSObject*, int, QTJSC::ScopeChainNode*, QTJSC::JSValue*) + 1054
          frame #18: 0x0000000100bf1811 QtScript`QTJSC::Interpreter::execute(QTJSC::EvalExecutable*, QTJSC::ExecState*, QTJSC::JSObject*, QTJSC::ScopeChainNode*, QTJSC::JSValue*) + 113
          frame #19: 0x0000000100cb33bb QtScript`QScriptEnginePrivate::evaluateHelper(QTJSC::ExecState*, long, QTJSC::EvalExecutable*, bool&) + 683
          frame #20: 0x0000000100cb718f QtScript`QScriptEngine::evaluate(QString const&, QString const&, int) + 399
          frame #21: 0x00000001001392fe libqbscore.1.2.0.dylib`qbs::Internal::JsCommandExecutorThreadObject::start(this=0x0000000101c1b2f0, cmd=0x0000000102f34280, transformer=0x0000000102f33250) + 1278 at jscommandexecutor.cpp:94
          frame #22: 0x0000000100138a41 libqbscore.1.2.0.dylib`qbs::Internal::JsCommandExecutorThreadObject::qt_static_metacall(_o=0x0000000101c1b2f0, _c=InvokeMetaMethod, _id=1, _a=0x0000000102ecd2a0) + 129 at jscommandexecutor.moc:80
          frame #23: 0x00000001008332e8 QtCore`QObject::event(QEvent*) + 808
          frame #24: 0x000000010080b3a4 QtCore`QCoreApplication::notify(QObject*, QEvent*) + 180
          frame #25: 0x000000010080bea4 QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 788
          frame #26: 0x0000000100853f5d QtCore`QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 61
          frame #27: 0x0000000100808753 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 403
          frame #28: 0x000000010064afdd QtCore`QThread::exec() + 109
          frame #29: 0x000000010064eb14 QtCore`QThreadPrivate::start(void*) + 452
          frame #30: 0x00007fff8bfd0899 libsystem_pthread.dylib`_pthread_body + 138
          frame #31: 0x00007fff8bfd072a libsystem_pthread.dylib`_pthread_start + 137
          frame #32: 0x00007fff8bfd4fc9 libsystem_pthread.dylib`thread_start + 13
      

      Attachments

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

        Activity

          People

            jbornema Joerg Bornemann
            jakepetroules Jake Petroules (DO NOT ASSIGN ISSUES)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes