Subsurface-mobile crash on deleting dive from dive list

Rick Walsh rickmwalsh at gmail.com
Sat Aug 5 19:55:43 PDT 2017


On 4 August 2017 at 14:11, Dirk Hohndel <dirk at hohndel.org> wrote:

>
> > On Aug 3, 2017, at 3:49 PM, Rick Walsh <rickmwalsh at gmail.com> wrote:
> >
> > Hi,
> >
> > This is not a new bug, and has been reported before, but I think it's
> one that should be eliminated before the next release.  When deleting a
> dive from the dive list (select the dive from the list but hold down until
> the trash icon appears, then select the trash icon), the app will crash...
> sometimes.  But sometimes it works.
>
> I have spent many hours on this. Yes, we either need to fix this or remove
> the feature.
>
I agree, I meant to say we should remove the feature if we can't fix it.

> This won't prevent another beta (it's not a regression, it's broken in the
> current beta), but it will prevent the actual release of 2.0.
>
> > The most reliable way I have come up with to reproduce the bug (crash
> just occurred 3 of 4 times) is:
> > 1) select a dive from somewhere in the list - dive details page will open
> > 2) hit back button to return to dive list, with dive still selected
> > 3) go to menu and open another page (e.g. 'About' or 'Settings')
> > 4) hit back button to return to dive list, with dive still selected
> > 5) hold down on the selected dive so the trash icon appears
> > 6) crash...
> >
> > That isn't the only way to reproduce the bug, but it's the most reliable
> way I have found.  I think it has something to do with deleting the
> currently selected dive, without properly selecting another dive.
> >
> > Below is an extract from my subsurface log.
> > TouchPointPressed without previous release event
> QQuickEventPoint(valid:true accepted:false state:Pressed
> scenePos:QPointF(70.3333,415) id:2000001 timeHeld:0)
> > The item DiveDetails_QMLTYPE_71(0xcb0e14e0) is already in the PageRow
> > Both point size and pixel size set. Using pixel size.
> > qrc:/templates/ApplicationHeader.qml:84:13: QML Heading: Binding loop
> detected for property "width"
> > Both point size and pixel size set. Using pixel size.
> > Both point size and pixel size set. Using pixel size.
> > qrc:/templates/ApplicationHeader.qml:84:13: QML Heading: Binding loop
> detected for property "width"
> > Both point size and pixel size set. Using pixel size.
> > qrc:/templates/ApplicationHeader.qml:84:13: QML Heading: Binding loop
> detected for property "width"
> > Both point size and pixel size set. Using pixel size.
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > Both point size and pixel size set. Using pixel size.
> > qrc:/templates/ApplicationHeader.qml:84:13: QML Heading: Binding loop
> detected for property "width"
> > Both point size and pixel size set. Using pixel size.
> > Both point size and pixel size set. Using pixel size.
> > "846.350: Synchronising data file"
> > qrc:///qml/DiveDetailsEdit.qml:254: TypeError: Cannot read property
> 'dive' of null
> > qrc:///qml/DiveDetailsEdit.qml:228: TypeError: Cannot read property
> 'dive' of null
> > qrc:///qml/DiveDetailsEdit.qml:216: TypeError: Cannot read property
> 'dive' of null
> > qrc:///qml/DiveDetailsEdit.qml:204: TypeError: Cannot read property
> 'dive' of null
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > QObject::startTimer: Timers cannot be started from another thread
> > "846.578: Preparing to save data"
> > "846.621: Start saving data"
> > "846.687: Start saving dives"
> > "846.727: Done creating local cache"
> >
> > The TypeError lines (254, 228, 216, 204) in DiveDetailsEdit.qml are
> similar.
> >             HintsTextEdit {
> >                 id: cylinderBox
> > ***Line 254***                model: diveDetailsListView.currentItem ?
> diveDetailsListView.currentItem.modelData.dive.cylinderList : null
> >                 inputMethodHints: Qt.ImhNoPredictiveText
> >                 Layout.fillWidth: true
> >
>

I sent a pull request to fix the TypeErrors, but unfortunately it doesn't
stop the crash.

>
> My suspicion is that somehow our different models get out of sync. But
> it's really, really hard to debug this :-(
>

Indeed it is
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20170806/4d77e8b5/attachment-0001.html>


More information about the subsurface mailing list