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

Crash when using extended states with transitions.

    XMLWordPrintable

Details

    Description

      Using the following example, click the open text to cause the green rect to expand, then toggle the portrait/landscape button a few times to trigger the crash.

      import QtQuick 1.1
      
      
      Item {
          id: window
          width: 480
          height: 640
      
          property bool portrait: true
          property bool closed: false
      
          Item {
              id: container
              anchors { left: parent.left; top: parent.top; right: parent.right }
              height: 480
      
              Item {
                  width: portrait ? 320 : 480
                  height: portrait ? 480 : 320
      
                  anchors.centerIn: parent
      
                  Rectangle {
                      id: menu
                      color: "green"
                      anchors { left: parent.left; top: parent.top }
      
                  }
      
                  Rectangle {
                      id: content
                      color: "black"
                      anchors { right: parent.right; bottom: parent.bottom }
      
                      Text {
                          anchors.centerIn: parent
                          text: closed ? "Close" : "Open"
                          font.pixelSize: 30
                          color: "white"
                      }
                  }
      
                  MouseArea {
                      anchors.fill: parent
                      onClicked: window.closed = !window.closed
                  }
      
              }
          }
      
          states: [
              State {
                  name: "portrait"
                  when: window.portrait && !window.closed
                  AnchorChanges {
                      target: menu
                      anchors { bottom: parent.verticalCenter; right: parent.right }
                  }
                  AnchorChanges {
                      target: content
                      anchors { top: parent.top; left:parent.left }
                  }
              }, State {
                  name: "portrait-closed"
                  extend: "portrait"
                  when: window.portrait && window.closed
                  AnchorChanges {
                      target: content
                      anchors.top: parent.verticalCenter
                  }
              }, State {
                  name: "landscape"
                  when: !window.portrait && !window.closed
                  AnchorChanges {
                      target: menu
                      anchors { bottom: parent.bottom; right: parent.horizontalCenter }
                  }
                  AnchorChanges {
                      target: content
                      anchors { top: parent.top; left:parent.left }
                  }
              }, State {
                  name: "landscape-closed"
                  extend: "landscape"
                  when: !window.portrait && window.closed
                  AnchorChanges {
                      target: content
                      anchors.left: parent.horizontalCenter
                  }
              }
          ]
      
          transitions: [
              Transition {
                  from: "portrait"; to: "portrait-closed"; reversible: true
                  AnchorAnimation { duration: 300 }
              }, Transition {
                  from: "landscape"; to: "landscape-closed"; reversible: true
                  AnchorAnimation { duration: 300 }
              }
          ]
      
          Item {
              anchors {
                  left: parent.left; top: container.bottom
                  right: parent.right; bottom: parent.bottom
              }
      
              Rectangle {
                  anchors.fill: buttonText
                  anchors.margins: -20
                  color: "lightsteelblue"
                  radius: 4
              }
      
              Text {
                  id: buttonText
                  anchors.centerIn: parent
      
                  text: window.portrait ? "Portrait" : "Landscape"
                  font.pixelSize: 30
              }
      
              MouseArea {
                  anchors.fill: buttonText
                  anchors.margins: -20
      
                  onClicked: window.portrait = !window.portrait
              }
          }
      }
      
      0x00007ffff793b7b4 in QDeclarativeAbstractBinding::removeFromObject (this=0x785540) at /.../src/declarative/qml/qdeclarativebinding.cpp:156
      156             *m_prevBinding = m_nextBinding;
      (gdb) bt
      #0  0x00007ffff793b7b4 in QDeclarativeAbstractBinding::removeFromObject (this=0x785540) at /.../src/declarative/qml/qdeclarativebinding.cpp:156
      #1  0x00007ffff793b540 in QDeclarativeAbstractBinding::addToObject (this=0x785540, object=0x6fb280, index=1) at /.../src/declarative/qml/qdeclarativebinding.cpp:104
      #2  0x00007ffff7941142 in QDeclarativePropertyPrivate::setBinding (object=0x6fb280, coreIndex=1, valueTypeIndex=-1, newBinding=0x785540, flags=...) at /.../src/declarative/qml/qdeclarativeproperty.cpp:795
      #3  0x00007ffff79409ee in QDeclarativePropertyPrivate::setBinding (that=..., newBinding=0x785540, flags=...) at /.../src/declarative/qml/qdeclarativeproperty.cpp:671
      #4  0x00007ffff7826655 in QDeclarativeAnchorChanges::execute (this=0x6f9470, reason=QDeclarativeActionEvent::FastForward) at /.../src/declarative/util/qdeclarativestateoperations.cpp:1160
      #5  0x00007ffff7820044 in QDeclarativeTransitionManager::transition (this=0x702158, list=..., transition=0x0) at /.../src/declarative/util/qdeclarativetransitionmanager.cpp:156
      #6  0x00007ffff781c09f in QDeclarativeState::apply (this=0x702d40, group=0x6e3bc0, trans=0x0, revert=0x6f22d0) at /.../src/declarative/util/qdeclarativestate.cpp:722
      #7  0x00007ffff7835362 in QDeclarativeStateGroupPrivate::setCurrentStateInternal (this=0x6f7530, state=..., ignoreTrans=false) at /.../src/declarative/util/qdeclarativestategroup.cpp:476
      #8  0x00007ffff7834226 in QDeclarativeStateGroup::setState (this=0x6e3bc0, state=...) at /.../src/declarative/util/qdeclarativestategroup.cpp:292
      #9  0x00007ffff78346ab in QDeclarativeStateGroupPrivate::updateAutoState (this=0x6f7530) at /.../src/declarative/util/qdeclarativestategroup.cpp:346
      #10 0x00007ffff78344b0 in QDeclarativeStateGroup::updateAutoState (this=0x6e3bc0) at /.../src/declarative/util/qdeclarativestategroup.cpp:327
      #11 0x00007ffff7819cbe in QDeclarativeState::setWhen (this=0x6f6610, when=0x6faa00) at /.../src/declarative/util/qdeclarativestate.cpp:256
      #12 0x00007ffff7a5ddd4 in QDeclarativeState::qt_metacall (this=0x6f6610, _c=QMetaObject::WriteProperty, _id=1, _a=0x7fffffff9f70) at .moc/debug-shared/moc_qdeclarativestate_p.cpp:181
      #13 0x00007ffff5c56694 in QMetaObject::metacall (object=0x6f6610, cl=QMetaObject::WriteProperty, idx=2, argv=0x7fffffff9f70) at /.../src/corelib/kernel/qmetaobject.cpp:245
      #14 0x00007ffff793c53c in QDeclarativeBinding::update (this=0x6faa00, flags=...) at /.../src/declarative/qml/qdeclarativebinding.cpp:359
      #15 0x00007ffff793db3e in QDeclarativeBinding::update (this=0x6faa00) at ../../include/QtDeclarative/private/../../../../../../depot/qt/4.8/src/declarative/qml/qdeclarativebinding_p.h:208
      #16 0x00007ffff793d4da in QDeclarativeBindingPrivate::emitValueChanged (this=0x6e7120) at /.../src/declarative/qml/qdeclarativebinding.cpp:469
      #17 0x00007ffff793a309 in QDeclarativeExpressionPrivate::_q_notify (this=0x6e7120) at /.../src/declarative/qml/qdeclarativeexpression.cpp:800
      #18 0x00007ffff793a636 in QDeclarativeExpression::qt_static_metacall (_o=0x6faa00, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fffffffa440) at .moc/debug-shared/moc_qdeclarativeexpression.cpp:54
      #19 0x00007ffff793a72a in QDeclarativeExpression::qt_metacall (this=0x6faa00, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fffffffa440) at .moc/debug-shared/moc_qdeclarativeexpression.cpp:94
      #20 0x00007ffff7a76246 in QDeclarativeBinding::qt_metacall (this=0x6faa00, _c=QMetaObject::InvokeMetaMethod, _id=5, _a=0x7fffffffa440) at .moc/debug-shared/moc_qdeclarativebinding_p.cpp:86
      #21 0x00007ffff5c56694 in QMetaObject::metacall (object=0x6faa00, cl=QMetaObject::InvokeMetaMethod, idx=5, argv=0x7fffffffa440) at /.../src/corelib/kernel/qmetaobject.cpp:245
      #22 0x00007ffff5c6c7b3 in QMetaObject::activate (sender=0x703220, m=0x755658, local_signal_index=0, argv=0x0) at /.../src/corelib/kernel/qobject.cpp:3558
      ---Type <return> to continue, or q <return> to quit---
      #23 0x00007ffff5c6caf0 in QMetaObject::activate (sender=0x703220, signal_index=32, argv=0x0) at /.../src/corelib/kernel/qobject.cpp:3615
      #24 0x00007ffff791fa22 in QDeclarativeVMEMetaObject::metaCall (this=0x755650, c=QMetaObject::WriteProperty, _id=41, a=0x7fffffffa810) at /.../src/declarative/qml/qdeclarativevmemetaobject.cpp:564
      #25 0x00007ffff5c56670 in QMetaObject::metacall (object=0x703220, cl=QMetaObject::WriteProperty, idx=41, argv=0x7fffffffa810) at /.../src/corelib/kernel/qmetaobject.cpp:243
      #26 0x00007ffff7942a51 in QDeclarativePropertyPrivate::write (object=0x703220, property=..., value=..., context=0x755250, flags=...) at /.../src/declarative/qml/qdeclarativeproperty.cpp:1147
      #27 0x00007ffff79ed6a1 in QDeclarativeObjectScriptClass::setProperty (this=0x733c80, obj=0x703220, name=@0x7fffffffad98: 0x750940, value=..., context=0x7fffef6a1048, evalContext=0x755250)
          at /.../src/declarative/qml/qdeclarativeobjectscriptclass.cpp:439
      #28 0x00007ffff79ec7a0 in QDeclarativeObjectScriptClass::setProperty (this=0x733c80, object=0x6f4520, name=@0x7fffffffad98: 0x750940, value=...) at /.../src/declarative/qml/qdeclarativeobjectscriptclass.cpp:329
      #29 0x00007ffff4dbc658 in QScript::DeclarativeObjectDelegate::put (this=0x6f55c0, object=0x7ffff7f85440, exec=0x7fffef6a1048, propertyName=..., value=..., slot=...) at /.../src/script/bridge/qscriptdeclarativeobject.cpp:99
      #30 0x00007ffff4da6489 in QScriptObject::put (this=0x7ffff7f85440, exec=0x7fffef6a1048, propertyName=..., value=..., slot=...) at /.../src/script/bridge/qscriptobject.cpp:80
      #31 0x00007ffff4c6a929 in QTJSC::JSValue::put (this=0x7fffffffaed0, exec=0x7fffef6a1048, propertyName=..., value=..., slot=...) at /.../src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.h:658
      #32 0x00007ffff4c99f10 in QTJSC::cti_op_put_by_id_generic (args=0x7fffffffaf10) at /.../src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp:1224
      #33 0x00007ffff4c994c3 in QTJSC::JITThunks::tryCacheGetByID (callFrame=0x16, codeBlock=0x7fffffffaea0, returnAddress=..., baseValue=..., propertyName=..., slot=..., stubInfo=0x7ffff7f85440)
          at /.../src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp:926
      

      Attachments

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

        Activity

          People

            Unassigned Unassigned
            andrew.den.exter Andrew den Exter
            Votes:
            2 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes