Latest iOS release

Rick Walsh rickmwalsh at gmail.com
Mon May 2 01:38:36 PDT 2016


On 2 May 2016 at 13:14, Thiago Macieira <thiago at macieira.org> wrote:

> On domingo, 1 de maio de 2016 07:33:32 PDT Dirk Hohndel wrote:
> > Oh I'm so tired of this Qt bug. Thiago, we really need to get this
> addressed
> > in Qt. It's ridiculous that we keep running into this, keep trying to
> work
> > around it, and randomly trigger it again. And right now building the
> mobile
> > version on the desktop doesn't appear to trigger it, at least not for
> me. I
> > don't see it on Android, either. It's only on iOS :-(
> >
> [cut]
> > etc until stack is overflowing. :-(
> >
> > As you can see it alternates in setImpicitSize between 319x387 and
> 329x405 -
> > I can see ~1400 layers of stack with this same sequence, all for the same
> > object. I'm ready to just hack my own Qt that prevents such
> > flip-flopping...
>
> That means the layout is unstable. When asked for what its preferred size
> is
> on qquicklinearlayout.cpp:414
>     const QSizeF pref = sizeHint(Qt::PreferredSize);
> the answer does not stabilise.
>
> Running subsurface-mobile on my laptop (under Fedora), I get an infinite
loop (I think) by going through the dive list, selecting a dive, going
back, selecting another.  It doesn't actually crash, but it stalls.  It
looks related, and debugging under Linux is usually easier than on a mobile.

(gdb) bt
#0  0x00007ffff3743bc6 in __memcpy_avx_unaligned () from /lib64/libc.so.6
#1  0x00007fffd037c286 in QVector<QQuickItem*>::reallocData(int, int,
QFlags<QArrayData::AllocationOption>) ()
   from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#2  0x00007fffd037c3a5 in QVector<QQuickItem*>::append(QQuickItem* const&)
() from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#3  0x00007fffd037b1b1 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#4  0x00007ffff442e0a0 in QMetaObject::activate(QObject*, int, int, void**)
() from /lib64/libQt5Core.so.5
#5  0x00007ffff52cac63 in QQuickItem::baselineOffsetChanged(double) () from
/lib64/libQt5Quick.so.5
#6  0x00007ffff5322122 in QQuickTextPrivate::updateSize() () from
/lib64/libQt5Quick.so.5
#7  0x00007ffff5324d68 in QQuickText::geometryChanged(QRectF const&, QRectF
const&) () from /lib64/libQt5Quick.so.5
#8  0x00007ffff52d0074 in QQuickItem::setSize(QSizeF const&) () from
/lib64/libQt5Quick.so.5
#9  0x00007fffd037b603 in QQuickGridLayoutItem::setGeometry(QRectF const&)
() from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#10 0x00007ffff4f94268 in QGridLayoutEngine::setGeometries(QRectF const&,
QAbstractLayoutStyleInfo const*) () from /lib64/libQt5Gui.so.5
#11 0x00007fffd037ac9b in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#12 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#13 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
#14 0x00007fffd037b136 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#15 0x00007fffd037acfc in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#16 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#17 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
#18 0x00007fffd037b136 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#19 0x00007fffd037acfc in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#20 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#21 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
#22 0x00007fffd037b136 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#23 0x00007fffd037acfc in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#24 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#25 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
#26 0x00007fffd037b136 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#27 0x00007fffd037acfc in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#28 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#29 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
#30 0x00007fffd037b136 in QQuickGridLayoutBase::invalidate(QQuickItem*) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#31 0x00007fffd037acfc in QQuickGridLayoutBase::rearrange(QSizeF const&) ()
from /usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#32 0x00007fffd0379550 in QQuickLayout::geometryChanged(QRectF const&,
QRectF const&) () from
/usr/lib64/qt5/qml/QtQuick/Layouts/libqquicklayoutsplugin.so
#33 0x00007ffff52cfe34 in QQuickItem::setImplicitSize(double, double) ()
from /lib64/libQt5Quick.so.5
---Type <return> to continue, or q <return> to quit---q




> I have absolutely no idea how the layout engine works. The only hint I
> have is
> to check whether the constraints (the anchors) in whatever page is causing
> this issue make sense.
>
> > Unfortunately I haven't figured out how to get to the innards of this
> "this"
> > pointer:
> >
> > (QQmlPrivate::QQmlElement<QQuickGridLayout> *) $0 = 0x0000000132122370
> > (lldb) p *this
> > (QQuickItem) $1 = {
> >   QObject = {
> >     d_ptr = {
> >       d = 0x00000001329b8f80
> >     }
> >   }
> >   QQmlParserStatus = {
> >     d = 0x0000000000000000
> >   }
> > }
>
> Try this:
> p *(QQuickItemPrivate *)d_ptr.d
>
> > Any idea how to get more information here? Or should I just hardcode a
> loop
> > detection?
> >
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
>    Software Architect - Intel Open Source Technology Center
>
> _______________________________________________
> subsurface mailing list
> subsurface at subsurface-divelog.org
> http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20160502/42852318/attachment-0001.html>


More information about the subsurface mailing list