Complete
over 2 years ago

bug: Data Field Is Not Running in onUpdate()


Error Name: Data Field Is Not Running
Occurrences: 25
First Occurrence: 2022-10-25
Last Occurrence: 2022-11-19
Devices:
Venu®: 7.20
Venu® 2: 11.08
Venu® 2: 10.24
fēnix® 5X / tactix® Charlie: 25.00
vívoactive® 4: 7.20
Venu® Sq. Music Edition: 3.80
App Versions: 2.1.0
Languages: ces, cht, eng, fre, pol
Backtrace:
ExtHRMField.onUpdate:218  var obscurityFlags = getObscurityFlags();

public function onUpdate(dc as Graphics.Dc) {
  var obscurityFlags = getObscurityFlags();
}

  • I started seeing this error recently too.  I have always had the getObscurityFlags() call in onLayout() (which is the backtrace reference below, even though doco says it should be in onUpdate())

    Error Name: Data Field Is Not Running
    Occurrences: 47
    First Occurrence: 2024-04-14
    Last Occurrence: 2024-05-30
    Devices:
     epixTm (Gen 2) / quatix® 7 Sapphire: 16.22
    App Versions: 1.4.4
    Languages: deu, pol
    Backtrace:
    intheZoneView.onLayout:91

  • Hello flocsy,

    This problem also occurs with my data field:


    The ERA report says it also occurs with FW 16.22:

    • epixTm Pro (Gen 2) 51mm / D2Tm Mach 1 Pro / tactix® 7 - AMOLED Edition: 16.22
    • fēnix® 7 / quatix® 7: 16.22

    Is there a workaround e.g. with try/catch ?

    Thanks.

  • It looks that this is now happening a lot in all devices with the recently released FW version: 16.22. I have moved now the call of getObscurityFlags() to onLayout, and I have ~80 of errors since 2024-03-28 on numerous devices, all of them with FW 16.22:

    epixTm Pro (Gen 2) 51mm / D2Tm Mach 1 Pro / tactix® 7 – AMOLED Edition: 16.22
    epixTm (Gen 2) / quatix® 7 Sapphire: 16.22
    epixTm (Gen 2) / quatix® 7 Sapphire: 16.22, 17.12, 17.10
    epixTm Pro (Gen 2) 47mm / quatix® 7 Pro: 16.22
    MARQ® (Gen 2) Athlete / Adventurer / Captain / Golfer / Carbon Edition / Commander - Carbon Edition: 16.22
    fēnix® 7 / quatix® 7: 16.22
    fēnix® 7 / quatix® 7: 16.22
    fēnix® 7 Pro: 16.22
    fēnix® 7X / tactix® 7 / quatix® 7X Solar / EnduroTm 2: 16.22
    fēnix® 7X / tactix® 7 / quatix® 7X Solar / EnduroTm 2: 16.22
    fēnix® 7X / tactix® 7 / quatix® 7X Solar / EnduroTm 2: 16.22
    fēnix® 7X / tactix® 7 / quatix® 7X Solar / EnduroTm 2: 16.22

    BTW unrelated question: why do I see the same device multiple times in one ERA report? i.e the last 4 lines above are from one report.

  • I have what will probably be a pretty unsatisfying answer.

    I did some digging into this today and agree that it's not your code that's causing this, because it appears to be related to an elusive and notoriously difficult-to-reproduce state that can occur with data fields. The end user sees an 'IQ...' icon in the place of the data field because the data field isn't running yet.

    Garmin publishes one app that has had this issue, and though I've found a couple of reports over the years that led to investigations into the problem, there hasn't been a resolution because the engineering teams are never able to reproduce the issue to debug. I think to fix this, we would need to have a device in hand that is in this state that can be used to really see what's happening.

  • I still have some "Data Field Is Not Running" errors in ERA, according to the backtrace all of them inside my onUpdate(). How could that be a bug in my datafield? Either my DF runs or not. If it runs then it makes sense that I see in the backtrace that it reached my code in onUpdate, but then it makes no sense that "the DF isn't running". Or it doesn't run, but then who calls onUpdate() in my code if not the VM?