Fenix 5X crashes when accessing data stored in a watch face.

Hi,

I have some users (all fenix 5X devices) that are reporting a crash with one of my watch face.

After requesting a few log files, I have notices that they all crash when the code is accessing the data stored. Seems to work most of the time but will crash at some point during the day.

Does anybody else is experiencing the same issues or do we already have reported this? Any reasons why the Fenix 5X is a special case?

Cheers,
PlayItLoud

Top Replies

All Replies

  • Users of my watch faces, the owners of Fenix 5X, also inform me about a crash when switching from watch faces to a widget or app and back to watch faces. I found out from the log files that this is due to the fact that the data stored in background are no longer available.
  • You can't store anything in a background process if that's what you mean. You can only read properties/Application.Storage in the background. That's always been the case.

    What FW version is on the f5x? Is this something you'd seen in the past, or just in the newer version of FW?
  • jim_m_58, I apologize. I meant the data stored in the function onBackgroundData. For example, weather information.
  • But then it wouldn't be triggered by exiting the WF, as it would only occur right after the background runs and the WF is running or when the wf is run after there's BG data queued.. What the error you see in ciq_log? Are you using Application.Storage or getProperty?

    If getProperty, are you using the objectStore of a property?
  • jim_m_58, i use Application.Storage.

    Log:
    Error: Unhandled Exception
    Time: 2019-03-13T19:19:12Z
    Part-Number: 006-B2604-00
    Firmware-Version: '12.50'
    Language-Code: eng
    ConnectIQ-Version: 3.0.9
    Store-Id: 934666b7-21dd-4ed1-9774-67af3a54e207
    Store-Version: 23
    Filename: 93DI4848
    Appname: AdjustableAnalogLite
    Message: 'UnexpectedTypeException: Expected String/Object/Array/Dictionary, given null'

    Code (borrowed from the watch face Crystal):
    if (App.Storage.getValue("PendingWebRequests")["OpenWeatherMapCurrent"]) {
    ...
    }
  • The "if" is wrong.. What you want to do is compare it to null before you use it.
    if(App.Storage.getValue("PendingWebRequests")!=null) {...}


    You're be doing something on a null without it. That's what the error is saying. The error is correct and you need to make this a bit smarter.

  • The "if" is wrong

    Thank. I have long overhauled this "if" like your advice. However, this error occurred exclusively on Fenix 5x. Before the error occurred, the OpenWeatherMapCurren had some value other than "null" and the data from this set was displayed on the screen. So this data was lost when switching to app and back to WF.

  • The fenix5x is unique because it has a separate display processor that is used for watch faces. It is possible that there is a communications problem and data that is being saved by the background process may not be available to the watch face process, resulting in a failure to read from Application.Storage and a null value being returned.

    This is all conjecture based on the information you've provided. It would be very helpful to us if you could file a bug report and provide a test case.

    Travis
  • Thank you guys for your feedback. It looks like moving away from using the Storage and using the Object Store instead fixed it. More testing is required but so far so good.

    Travis.ConnectIQ Sure, do you have a preferred email I could use?