make testShell crashes

Bug #1332598 reported by Albert Astals Cid
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
unity8 (Ubuntu)
Fix Released
Critical
Albert Astals Cid

Bug Description

Since Qt 5.3 make testShell is crashing

Find out why

Related branches

Revision history for this message
Albert Astals Cid (aacid) wrote :

When compiled with debug i'm getting
ASSERT: "context() && engine()" in file qml/qqmlboundsignal.cpp, line 190

Changed in unity8:
importance: Undecided → Critical
Revision history for this message
Daniel d'Andrada (dandrader) wrote :

I get the very same crash when trying to run lp:~unity-team/unity8/mirCompositor.
So that bug is blocking the "Rotating Shell" feature because right now, as a work around this bug, we have disabled it, which magically makes the bug go away.

Changed in unity8:
status: New → In Progress
assignee: nobody → Albert Astals Cid (aacid)
Revision history for this message
Michael Terry (mterry) wrote :

I looked into this briefly over the weekend. I just wanted to see if I could stop the crash by disabling a little bit of qml, so I could at least test parts of the shell for other branches.

It seems like the error is in the Dash's GenericScopeView's sectionDelegate being set to a ListItems.Header.

If ListItems.Header doesn't have any height (no child items and no declared height), it doesn't crash. If you comment out some of the code in ListViewWithPageHeader::setSectionDelegate and ListViewWithPageHeader::getSectionItem, it doesn't crash.

But I figure digging more than that involved more knowledge of Qml than I have, at least to figure it out in a reasonable amount of time.

Revision history for this message
Albert Astals Cid (aacid) wrote :
Revision history for this message
Albert Astals Cid (aacid) wrote :

My naive patch upstream that fixes it (not sure it may break a billion other things) https://codereview.qt-project.org/#/c/88717/

Revision history for this message
Daniel d'Andrada (dandrader) wrote :

@mterry

I went through the same exercise last week with lp:~unity-team/unity8/mirCompositor. I found out that you by commenting out *arbitrary* parts of the QML code you can make it go away. Or even moving code from one file to the other (so that the end resulting qml tree is still exactly the same). My conclusion is that trying to pinpoint some piece of QML code as "the one bit that causes the crash" is simply misleading.

Revision history for this message
Albert Astals Cid (aacid) wrote :

IRC comment from upstream: "that's probably not The Right Thing<TM> but I'm not 100% sure which object should retain it. So, I'd keep that patch around in your repo and replace it with whatever Simon comes up with"

Simon is on holidays until 17th.

Revision history for this message
Albert Astals Cid (aacid) wrote :

There's also more crashes besides this one fixed in qtdeclarative, i'll link the branches as i have them

Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
status: New → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.9 KiB)

This bug was fixed in the package unity8 - 7.90+14.10.20140703.1-0ubuntu1

---------------
unity8 (7.90+14.10.20140703.1-0ubuntu1) utopic; urgency=low

  [ Michał Sawicz ]
  * Initial code for a payment button widget, to handle purchasing apps
    from the click scope.

  [ Nick Dedekind ]
  * Moved [Message]MenuItemFacotory from Unity.Indicators plugin to qml
    folder.

  [ Albert Astals ]
  * EasingCurve: Initialize members
  * Fix valgrind warning by not emitting reset on model destructor That
    won't be supported until Qt 5.4 More info at https://bugreports.qt-
    project.org/browse/QTBUG-39780 Warning was ==16693== Invalid read of
    size 8 ==16693== at 0x72B19A0: QQmlContext::isValid() const
    (qqmlcontext.cpp:231) ==16693== by 0x736C82B:
    QQmlDelegateModelPrivate::emitChanges() (qqmldelegatemodel.cpp:1412)
    ==16693== by 0x7372AE6: QQmlDelegateModel::_q_modelReset()
    (qqmldelegatemodel.cpp:1463) ==16693== by 0x7397224:
    QQmlDelegateModel::qt_static_metacall(QObject*, QMetaObject::Call,
    int, void**) (moc_qqmldelegatemodel_p.cpp:196) ==16693== by
    0x739769E: QQmlDelegateModel::qt_metacall(QMetaObject::Call, int,
    void**) (moc_qqmldelegatemodel_p.cpp:292) ==16693== by 0x66379CC:
    QMetaObject::activate(QObject*, int, int, void**) (in
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==16693== by
    0x65AEEFD: QAbstractItemModel::endResetModel() (in /usr/lib/x86_64-
    linux-gnu/libQt5Core.so.5.3.0) ==16693== by 0x23461EFD:
    FakeIndicatorsModel::unload() (fakeindicatorsmodel.cpp:53) ==16693==
    by 0x23461E13: FakeIndicatorsModel::~FakeIndicatorsModel()
    (fakeindicatorsmodel.cpp:34) ==16693== by 0x2345C073:
    QQmlPrivate::QQmlElement<FakeIndicatorsModel>::~QQmlElement() (in
    /home/tsdgeos_work/phablet/unity8/investigate_test_shell_crash/build
    dir/tests/mocks/Unity/Indicators/libIndicatorsFakeQml.so) ==16693==
    by 0x2345C0A3:
    QQmlPrivate::QQmlElement<FakeIndicatorsModel>::~QQmlElement()
    (qqmlprivate.h:106) ==16693== by 0x663636B:
    QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-
    gnu/libQt5Core.so.5.3.0) ==16693== Address 0x1862d448 is 8 bytes
    inside a block of size 16 free'd ==16693== at 0x4C2C2BC: operator
    delete(void*) (vg_replace_malloc.c:503) ==16693== by 0x72B21B8:
    QQmlContextData::destroy() (qqmlcontext.cpp:647) ==16693== by
    0x7293458: QQmlPrivate::qdeclarativeelement_destructor(QObject*)
    (qqmlengine.cpp:612) ==16693== by 0x6C0CADD:
    QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement()
    (qqmlprivate.h:105) ==16693== by 0x663636B:
    QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-
    gnu/libQt5Core.so.5.3.0) ==16693== by 0x663F0EB: QObject::~QObject()
    (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==16693== by
    0x6BF64B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==16693==
    by 0x6C0CAE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement()
    (qqmlprivate.h:106) ==16693== by 0x663636B:
    QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-
    gnu/libQt5Core.so.5.3.0) ==16693== by 0x663F0EB: QObject::~QObject()
    (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==16693== by
    0x6BF64...

Read more...

Changed in unity8 (Ubuntu):
status: In Progress → Fix Released
Michał Sawicz (saviq)
Changed in unity8:
status: In Progress → Fix Released
Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
assignee: nobody → Albert Astals Cid (aacid)
importance: Undecided → Critical
no longer affects: unity8
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.