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

Generating JIT code crashes QML app

    XMLWordPrintable

    Details

    • Platform/s:
      Windows
    • Commits:
      86a595b126bc6794380dc00af80ec4802f7d058c (qt/qtdeclarative/dev) 68c3a6128469c435810e319411cceb72992ac6b5 (qt/qtdeclarative/6.0) 35614462443c100b6753b335b58a134fed4b5c35 (qt/qtdeclarative/5.15)

      Description

      In Windows 64-bit (both mingw and msvc) generating JIT code during instantiating QML components sometimes crashes. In certain situations, e.g. in our app, the crash is easy to reproduce.

      Can confirm that this crash happens with both 5.15.0 and 5.15.2 and more seldomly also elsewhere in our app's UI so it's not directly related to one particular QML function.

      On request, I can provide our app installer and easy steps to reproduce this crash. Just send mail to my qt account's address. You should be able to replace the release Qt DLLs in the installation with debug versions in it and then be able to debug the crash.

       Here is a  debugger screen shot of the crash.

      Call stack:

      > Qt5Qmld.dll!QV4::generateFunctionTable(QV4::Function * __formal, JSC::MacroAssemblerCodeRef * codeRef) Line 111 C++
      Qt5Qmld.dll!QV4::JIT::PlatformAssemblerCommon::link(QV4::Function * function, const char * jitKind) Line 162 C++
      Qt5Qmld.dll!QV4::JIT::BaselineAssembler::link(QV4::Function * function) Line 851 C++
      Qt5Qmld.dll!QV4::JIT::BaselineJIT::generate() Line 75 C++
      Qt5Qmld.dll!QV4::Moth::VME::exec(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine) Line 447 C++
      Qt5Qmld.dll!QV4::Function::call(const QV4::Value * thisObject, const QV4::Value * argv, int argc, const QV4::ExecutionContext * context) Line 69 C++
      Qt5Qmld.dll!QQmlJavaScriptExpression::evaluate(QV4::CallData * callData, bool * isUndefined) Line 212 C++
      Qt5Qmld.dll!QQmlBoundSignalExpression::evaluate(void * * a) Line 226 C++
      Qt5Qmld.dll!QQmlBoundSignal_callback(QQmlNotifierEndpoint * e, void * * a) Line 362 C++
      Qt5Qmld.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 105 C++
      Qt5Qmld.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 836 C++
      Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3782 C++
      Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947 C++
      Qt5Quickd.dll!QQuickItem::heightChanged() Line 1213 C++
      Qt5Quickd.dll!QQuickItem::geometryChanged(const QRectF & newGeometry, const QRectF & oldGeometry) Line 3756 C++
      Qt5Quickd.dll!QQuickItem::setImplicitHeight(double h) Line 6915 C++
      Qt5Quickd.dll!QQuickItem::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 987 C++
      Qt5Qmld.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 375 C++
      Qt5Qmld.dll!GenericBinding<6>::doStore<double>(double value, const QQmlPropertyData * pd, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 343 C++
      Qt5Qmld.dll!GenericBinding<6>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 315 C++
      Qt5Qmld.dll!QQmlNonbindingBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 258 C++
      Qt5Qmld.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 196 C++
      Qt5Qmld.dll!QQmlBinding::expressionChanged() Line 546 C++
      Qt5Qmld.dll!QQmlJavaScriptExpressionGuard_callback(QQmlNotifierEndpoint * e, void * * __formal) Line 419 C++
      Qt5Qmld.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 105 C++
      Qt5Qmld.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 836 C++
      Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3782 C++
      Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947 C++
      Qt5Quickd.dll!QQuickItem::implicitHeightChanged() Line 1231 C++
      Qt5Quickd.dll!QQuickItemPrivate::implicitHeightChanged() Line 6881 C++
      Qt5Quickd.dll!QQuickItem::setImplicitHeight(double h) Line 6917 C++
      Qt5Quickd.dll!QQuickItem::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 987 C++
      Qt5Qmld.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 375 C++
      Qt5Qmld.dll!GenericBinding<6>::doStore<double>(double value, const QQmlPropertyData * pd, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 343 C++
      Qt5Qmld.dll!GenericBinding<6>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 315 C++
      Qt5Qmld.dll!QQmlNonbindingBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 258 C++
      Qt5Qmld.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 196 C++
      Qt5Qmld.dll!QQmlBinding::expressionChanged() Line 546 C++
      Qt5Qmld.dll!QQmlJavaScriptExpressionGuard_callback(QQmlNotifierEndpoint * e, void * * __formal) Line 419 C++
      Qt5Qmld.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 105 C++
      Qt5Qmld.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 836 C++
      Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3782 C++
      Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947 C++
      Qt5Quickd.dll!QQuickItem::heightChanged() Line 1213 C++
      Qt5Quickd.dll!QQuickItem::geometryChanged(const QRectF & newGeometry, const QRectF & oldGeometry) Line 3756 C++
      Qt5Quickd.dll!QQuickItem::setHeight(double h) Line 6860 C++
      Qt5Quickd.dll!QQuickItem::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 972 C++
      Qt5Qmld.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 375 C++
      Qt5Qmld.dll!GenericBinding<6>::doStore<double>(double value, const QQmlPropertyData * pd, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 343 C++
      Qt5Qmld.dll!GenericBinding<6>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 315 C++
      Qt5Qmld.dll!QQmlNonbindingBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 258 C++
      Qt5Qmld.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 196 C++
      Qt5Qmld.dll!QQmlBinding::expressionChanged() Line 546 C++
      Qt5Qmld.dll!QQmlJavaScriptExpressionGuard_callback(QQmlNotifierEndpoint * e, void * * __formal) Line 419 C++
      Qt5Qmld.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 105 C++
      Qt5Qmld.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 836 C++
      Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3782 C++
      Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947 C++
      Qt5Quickd.dll!QQuickItem::implicitHeightChanged() Line 1231 C++
      Qt5Quickd.dll!QQuickItemPrivate::implicitHeightChanged() Line 6881 C++
      Qt5Quickd.dll!QQuickItem::setImplicitHeight(double h) Line 6902 C++
      Qt5Quickd.dll!QQuickItem::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 987 C++
      Qt5Qmld.dll!QQmlPropertyData::writeProperty(QObject * target, void * value, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 375 C++
      Qt5Qmld.dll!GenericBinding<6>::doStore<double>(double value, const QQmlPropertyData * pd, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 343 C++
      Qt5Qmld.dll!GenericBinding<6>::write(const QV4::Value & result, bool isUndefined, QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 315 C++
      Qt5Qmld.dll!QQmlNonbindingBinding::doUpdate(const QQmlJavaScriptExpression::DeleteWatcher & watcher, QFlags<enum QQmlPropertyData::WriteFlag> flags, QV4::Scope & scope) Line 258 C++
      Qt5Qmld.dll!QQmlBinding::update(QFlags<enum QQmlPropertyData::WriteFlag> flags) Line 196 C++
      Qt5Qmld.dll!QQmlBinding::expressionChanged() Line 546 C++
      Qt5Qmld.dll!QQmlJavaScriptExpressionGuard_callback(QQmlNotifierEndpoint * e, void * * __formal) Line 419 C++
      Qt5Qmld.dll!QQmlNotifier::emitNotify(QQmlNotifierEndpoint * endpoint, void * * a) Line 105 C++
      Qt5Qmld.dll!QQmlData::signalEmitted(QAbstractDeclarativeData * __formal, QObject * object, int index, void * * a) Line 836 C++
      Qt5Cored.dll!doActivate<0>(QObject * sender, int signal_index, void * * argv) Line 3782 C++
      Qt5Cored.dll!QMetaObject::activate(QObject * sender, const QMetaObject * m, int local_signal_index, void * * argv) Line 3947 C++
      Qt5Quickd.dll!QQuickItem::implicitHeightChanged() Line 1231 C++
      Qt5Quickd.dll!QQuickItemPrivate::implicitHeightChanged() Line 6881 C++
      Qt5Quickd.dll!QQuickItem::setImplicitHeight(double h) Line 6917 C++
      Qt5Quickd.dll!QQuickTextPrivate::setupTextLayout(double * const baseline) Line 1011 C++
      Qt5Quickd.dll!QQuickTextPrivate::updateSize() Line 413 C++
      Qt5Quickd.dll!QQuickTextPrivate::updateLayout() Line 295 C++
      Qt5Quickd.dll!QQuickText::componentComplete() Line 2767 C++
      Qt5Qmld.dll!QQmlObjectCreator::finalize(QQmlInstantiationInterrupt & interrupt) Line 1417 C++
      Qt5Qmld.dll!QQmlComponentPrivate::complete(QQmlEnginePrivate * enginePriv, QQmlComponentPrivate::ConstructionState * state) Line 989 C++
      Qt5Qmld.dll!QQmlComponentPrivate::completeCreate() Line 1080 C++
      Qt5Qmld.dll!QQmlComponent::createObject(QQmlV4Function * args) Line 1493 C++
      Qt5Qmld.dll!QQmlComponent::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 163 C++
      Qt5Qmld.dll!QQmlComponent::qt_metacall(QMetaObject::Call _c, int _id, void * * _a) Line 232 C++
      Qt5Cored.dll!QMetaObject::metacall(QObject * object, QMetaObject::Call cl, int idx, void * * argv) Line 318 C++
      Qt5Qmld.dll!QQmlObjectOrGadget::metacall(QMetaObject::Call type, int index, void * * argv) Line 52 C++
      Qt5Qmld.dll!QV4::QObjectMethod::callInternal(const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 2127 C++
      Qt5Qmld.dll!QV4::QObjectMethod::virtualCall(const QV4::FunctionObject * m, const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 2069 C++
      Qt5Qmld.dll!QV4::FunctionObject::call(const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 203 C++
      Qt5Qmld.dll!QV4::Moth::VME::interpret(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine, const char * code) Line 754 C++
      Qt5Qmld.dll!QV4::Moth::VME::exec(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine) Line 463 C++
      Qt5Qmld.dll!QV4::ArrowFunction::virtualCall(const QV4::FunctionObject * fo, const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 528 C++
      Qt5Qmld.dll!QV4::FunctionObject::call(const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 203 C++
      Qt5Qmld.dll!QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine * engine, unsigned int index, QV4::Value * argv, int argc) Line 1366 C++
      Qt5Qmld.dll!QV4::Moth::VME::interpret(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine, const char * code) Line 784 C++
      Qt5Qmld.dll!QV4::Moth::VME::exec(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine) Line 463 C++
      Qt5Qmld.dll!QV4::ArrowFunction::virtualCall(const QV4::FunctionObject * fo, const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 528 C++
      Qt5Qmld.dll!QV4::FunctionObject::call(const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 203 C++
      Qt5Qmld.dll!QV4::Runtime::CallQmlContextPropertyLookup::call(QV4::ExecutionEngine * engine, unsigned int index, QV4::Value * argv, int argc) Line 1366 C++
      Qt5Qmld.dll!QV4::Moth::VME::interpret(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine, const char * code) Line 784 C++
      Qt5Qmld.dll!QV4::Moth::VME::exec(QV4::CppStackFrame * frame, QV4::ExecutionEngine * engine) Line 463 C++
      Qt5Qmld.dll!QV4::ArrowFunction::virtualCall(const QV4::FunctionObject * fo, const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 528 C++
      Qt5Qmld.dll!QV4::FunctionObject::call(const QV4::Value * thisObject, const QV4::Value * argv, int argc) Line 203 C++
      Qt5Qmld.dll!QV4::FunctionObject::call(const QV4::JSCallData & data) Line 113 C++
      Qt5Qmld.dll!QQmlDelayedCallQueue::DelayedFunctionCall::execute(QV4::ExecutionEngine * engine) Line 79 C++
      Qt5Qmld.dll!QQmlDelayedCallQueue::executeAllExpired_Later() Line 204 C++
      Qt5Qmld.dll!QQmlDelayedCallQueue::ticked() Line 212 C++
      Qt5Qmld.dll!QQmlDelayedCallQueue::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 77 C++
      Qt5Cored.dll!QMetaCallEvent::placeMetaCall(QObject * object) Line 618 C++
      Qt5Cored.dll!QObject::event(QEvent * e) Line 1314 C++
      Qt5Widgetsd.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3632 C++
      Qt5Widgetsd.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 2972 C++
      Qt5Cored.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1063 C++
      Qt5Cored.dll!QCoreApplication::sendEvent(QObject * receiver, QEvent * event) Line 1459 C++
      Qt5Cored.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1817 C++
      Qt5Cored.dll!QEventDispatcherWin32::sendPostedEvents() Line 1082 C++
      qwindowsd.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 81 C++
      Qt5Cored.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 530 C++
      qwindowsd.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 73 C++
      Qt5Cored.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 140 C++
      Qt5Cored.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 232 C++
      Qt5Cored.dll!QCoreApplication::exec() Line 1371 C++
      Qt5Guid.dll!QGuiApplication::exec() Line 1868 C++
      Qt5Widgetsd.dll!QApplication::exec() Line 2825 C++
      vautil.dll!VisionAppster::FinishableApplication<QApplication>::exec() Line 55 C++
      va-builder.exe!main(int argc, char * * argv) Line 154 C++
      va-builder.exe!WinMain(HINSTANCE__ * _formal, HINSTANCE_ * __formal, char * __formal, int __formal) Line 97 C++
      [External Code]

       

        Attachments

          Issue Links

          For Gerrit Dashboard: QTBUG-89513
          # Subject Branch Project Status CR V

            Activity

              People

              Assignee:
              ulherman Ulf Hermann
              Reporter:
              -mtuokko- Mikko Tuokko
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There are no open Gerrit changes