Incomplete and inaccurate

Sorry to say Arc is less and less reliable in collecting and recording activities and locations. Practically every day my timeline is messed up, broken and incomplete. Sometimes I can sort of repair it by editing individual segments, but most of the time the data just isn’t there. Activities start somewhere in the middle, staying in locations for at least 5 minutes is not recorded at all.

Could you please attach some screenshots from Arc Mini, to help debug what’s going wrong on your phone.

  1. The Debug Logs / Session Logs view:

  2. Screenshots of the bottom of the three most recent session logs (scrolled to the bottom):

  3. The System Debug Info view, scrolled to the bottom to see the background task states:

Hi Matt

The last couple of days there were no irregularities, so I figured it would make more sense to send you a log of a day where data is missing. The Arc screenshot is showing the car activity only after I left home for quite a while. The distance should have been around 20km instead of 2,3km
The session log of that period is showing errors. Maybe this will shed some light. If not let me know and I’ll send you the recent files as requested

Hans Douma

Okay, so from the session log we can see that Mini was launched automatically in the background at 12:42. Probably launched by iOS’s “significant location change” monitoring, or CLVisit monitoring.

Aside: You can tell it was launched in the background because there’s no log message for “Grew a full head”. If the app is launched automatically in the background then it runs “headless”, ie with no UI. That allows it to use significantly less memory, and keep under the recommended 50 MB memory use, to avoid some of the termination risk.

At 13:02 the log shows that Mini took over as the active recorder, which means that Arc App had been terminated within a couple of minutes previous. (One app will take over as active recorder if the other is terminated, and the deadman’s switch checking is every 1-2 minutes).

So that means the 6 minutes car (then 23 minutes of walking) in the timeline view screenshot must’ve been where Arc Mini took over. But that doesn’t quite make sense, because Mini was already alive for 20 minutes before that, but hadn’t become active recorder. The only way for that to happen would be if Arc App was still “alive” and updating its active recorder status at least every 2 minutes. But yet Arc App hadn’t recorded any of the travel.

So that means that Arc App was alive, but wasn’t being fed accurate/usable location data by iOS. It was sitting there thinking it was doing its job properly, but wasn’t being fed correct location data for that job. If that’s happening regularly, then that could explain the problem you’re having.

Though iOS failing like that, and not providing usable location data to one of the apps, should be an exceptionally rare thing. That’s the kind of rare occurrence that I’d typically recommend rebooting the phone to fix. But it shouldn’t be necessary to reboot the phone that frequently.

The problem there though is that’s an iOS bug that we have no way to debug or fix. So it leads us to a bit of a dead end.

I could perhaps attempt to have the active recorder app detect heuristically whether iOS has fallen into that broken state, and if so, resign its active recorder status and let the other app take over.

LocoKit already has some rudimentary detection of this problem, of a milder kind, where it detects that the LocationManager has gone stale/dead, so it discards it and creates a new one, to work around a similar problem in some older versions of iOS. Assuming the symptoms of the two problems (as represented in the location data) are similar, it might work. Perhaps if a newly created LocationManager is still acting dead/stale, then the recorder could switch to Plan B, ie to resign as active recorder.

I’ve put that on the todos to try. It’ll be next to impossible to know whether it really solves the problem or not, but it’s worth a try.

OK, I will upgrade to an iPhone 13 and IOS 15 shortly and maybe that will solve some of these issues