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

QQmlExpression assert crash when evaluating "true()"

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P2: Important
    • Resolution: Done
    • Affects Version/s: 5.4.0, 5.5.0
    • Fix Version/s: 5.4.1
    • Labels:
      None
    • Environment:
      This is on qtdeclarative commit 8b3643dd8b492f7754846e7371686db61bcfef69.
    • Commits:
      0bba8d7411d0b1f1b547f9ac960e7d84769c7154

      Description

      Evaluating this ends up with an assert from inside v4:

      #include <QtCore/QCoreApplication>
      #include <QtQml/QQmlEngine>
      #include <QtQml/QQmlExpression>
      
      int main(int argc, char **argv)
      {
          QCoreApplication app(argc, argv);
          QQmlEngine engine;
          QQmlExpression expr(engine.rootContext(), 0, QLatin1String("true()"));
          QVariant res = expr.evaluate();
          Q_ASSERT(res.isValid());
          return true;
      }
      

      Here's the backtrace:

      #0  0x00007ffff649c4e5 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
      #1  0x00007ffff649d968 in __GI_abort () at abort.c:90
      #2  0x00007ffff70ef1b3 in qt_message_fatal (context=..., message=...) at /home/jkt/work/prog/qt5/qtbase/src/corelib/global/qlogging.cpp:1411
      #3  0x00007ffff70eb466 in QMessageLogger::fatal (this=0x7fffffffcce0, msg=0x7ffff74ae810 "ASSERT: \"%s\" in file %s, line %d")
          at /home/jkt/work/prog/qt5/qtbase/src/corelib/global/qlogging.cpp:636
      #4  0x00007ffff70e35d4 in qt_assert (assertion=0x7ffff7bee02f "!\"TODO\"", 
          file=0x7ffff7bedf58 "/home/jkt/work/prog/qt5/qtdeclarative/src/qml/compiler/qv4isel_p.cpp", line=223)
          at /home/jkt/work/prog/qt5/qtbase/src/corelib/global/qglobal.cpp:2868
      #5  0x00007ffff7804a04 in QV4::IR::IRDecoder::visitMove (this=0x555555654970, s=0x555555650290)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/compiler/qv4isel_p.cpp:223
      #6  0x00007ffff780dd8d in QV4::IR::Move::accept (this=0x555555650290, v=0x555555654970) at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/compiler/qv4jsir_p.h:680
      #7  0x00007ffff78d4b15 in QV4::JIT::RegAllocInfo::collect (this=0x555555654970, function=0x55555564a090, lifeTimeIntervals=...)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/jit/qv4regalloc.cpp:171
      #8  0x00007ffff78ced13 in QV4::JIT::RegisterAllocator::run (this=0x7fffffffd0b0, function=0x55555564a090, opt=...)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/jit/qv4regalloc.cpp:1260
      #9  0x00007ffff78e1e9e in QV4::JIT::InstructionSelection::run (this=0x5555556520b0, functionIndex=0)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/jit/qv4isel_masm.cpp:221
      #10 0x00007ffff78035a6 in QV4::EvalInstructionSelection::compile (this=0x5555556520c0, generateUnitData=true)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/compiler/qv4isel_p.cpp:78
      #11 0x00007ffff79d89ac in QV4::Script::parse (this=0x7fffffffd720) at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/jsruntime/qv4script.cpp:262
      #12 0x00007ffff7b17077 in QQmlJavaScriptExpression::qmlBinding (ctxt=0x555555649fd0, qmlScope=0x0, code=..., filename=..., line=0, qmlscope=0x55555564a248)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:331
      #13 0x00007ffff7a6e789 in QQmlExpressionPrivate::v4value (this=0x55555564a190, isUndefined=0x0)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/qml/qqmlexpression.cpp:251
      #14 0x00007ffff7a6e9e2 in QQmlExpressionPrivate::value (this=0x55555564a190, isUndefined=0x0)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/qml/qqmlexpression.cpp:277
      #15 0x00007ffff7a6eb00 in QQmlExpression::evaluate (this=0x7fffffffd950, valueIsUndefined=0x0)
          at /home/jkt/work/prog/qt5/qtdeclarative/src/qml/qml/qqmlexpression.cpp:298
      #16 0x0000555555554f25 in main (argc=1, argv=<optimized out>) at bug-qqmlexpression-bool-called.cpp:10
      

        Attachments

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

          Activity

            People

            • Assignee:
              shausman Simon Hausmann
              Reporter:
              jkt Jan Kundrát
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Gerrit Reviews

                There are no open Gerrit changes