TC21 / TC26 app crash after several days idle


We have a Xamarin app that runs on iOS and Android and has been stable and in widespread use for a couple of years.

When running on Zebra TC21 / TC26, this app exhibits several several strange behaviours:

[1] It fails to log any activity to our Loggly account (whereas it logs correctly when running on all other device types).
[2] It fails to log crashes to App Center (whereas crash data is correctly captured from other device types)
[3] It crashes on startup if left idle for a few days, apparently because Zebra's Android has recycled the main activity. It is not entirely clear what is happening here, and the complete lack of any log data makes this very difficult to diagnose.

On the assumption that the crash issue is occurring during a suspend / resume cycle, I have tried to reproduce it by setting the Android background process limit to 1 and switching to another app and back again. This correctly suspends and resumes our failing app, without any crash. However, the app will reliably crash if the device is left idle for 3 or 4 days.

So, I have a couple of questions:

[1] Does Zebra TC21 / TC26 use a customized version of Android that might explain this difference in behaviour (compared with generic Android devices)?
[2] Can you suggest a procedure that would help me to reproduce the crash in real time, while debugging?

Thanks, in advance, for any suggestions.

Submitted by James Swinton … on October 21, 2021 Permalink

Hi Tim,

My guess would be that there could be some sort of memory leak that, after a few days, causes a crash in your application. I'm not aware of any significant changes to the TC21/26 OS builds that might cause the behavior you're describing.

In terms of debugging, I'd recommend use RXLogger to capture device logs and review those to see if it sheds any light on the cause.

Submitted by on October 21, 2021 Permalink

Thank you for your response and your suggestions, JS6845.

Since posting my original question, I have succeeded in getting logging to work on the device (which I achieved on my test device simply by factory resetting it). This means that I am now able to track exactly what the app is doing, when in the idle state. As far as I know, it should be doing nothing - just waiting to be resumed - so I am sceptical that a memory leak is the culprit, but hopefully the logs will reveal all.

I will also definitely experiment with RXLogger. I wasn't even aware that this existed, but it could be very helpful.

I will post here again when I have a better understanding of what's happening. Thanks again.

Submitted by on October 21, 2021 Permalink

On an unrelated issue, it's pretty disappointing to see that this website publishes my email address on a publicly visible page. I wonder if that's in the Zebra privacy policy?

Submitted by James Swinton … on November 11, 2021 Permalink

Hi Tim,

Thanks for your feedback - I believe you can change this via your account page (display name) though I do agree that ideally this should not default to your email address. I'll be sure to pass your feedback on.

Edit: A fix has been created for this and will be pushed live in the next couple of weeks.