Acknowledged
CIQQA-4663

Edge 1050 firmware 32.20 — device reboots when swapping a data field whose app overrides AppBase.onStop(), even with an empty body

Device / Firmware: Edge 1050, system_version 32.20 (PRODUCTION). Not present on firmware 31.33 with identical app code.

Root cause: Any Connect IQ data field app whose App.AppBase subclass overrides onStop(state) — even as a no-op empty function — crashes the device when that field is swapped out via the on-device field editor. Removing the override (relying on the inherited default) eliminates the crash, with no other code change.

Repro steps (using Garmin's provided SimpleDataField SDK sample, unmodified except adding edge1050 to the product list):

  1. Install samples/SimpleDataField (as shipped in the Connect IQ SDK) on an Edge 1050 running 32.20.
  2. Place it on an active page; it renders normally and indefinitely — the bug is not in normal operation.
  3. Long-press the field to enter edit mode.
  4. Short-press to open "change field" (which would load the list of replacement fields).
  5. Device reboots before the list renders. Crash log shows Error type ( 8 ) err( 8 ), all registers zeroed, no ram dump captured — a watchdog-class reset, not a caught exception.

Confirmed fix: removing SimpleDataFieldApp.mc's onStop(state) override entirely (letting it fall through to the inherited AppBase no-op) makes the exact same repro stop crashing, with zero other changes.

Scope of impact: overriding onStart/onStop as empty stubs is extremely common — it's the default output of the Eclipse ADT project template, and 38 of the 43 sample apps shipped in SDK 9.2.0 itself do this, including SimpleDataField. This almost certainly affects a large fraction of installed Connect IQ data fields on Edge 1050 running 32.20, not just one specific app.

Crash signature (device's Uploads/Error/err_log.txt):

"backtrace": " - Error type ( 8 ) err( 8 )",
"error_cause": "8",
"system_version": "32.20"

Workaround for other developers hitting this: remove any empty/no-op onStart/onStop overrides from your AppBase subclass.

  • SimpleDataField_edge1050.prg

    Attaching the SimpleDataField prg that i can reproduce it with

     1. Place the data field on an Edge 1050 running firmware 32.20.
     2. Let it run normally on an active page.
     3. Long-press the field to enter edit mode, then short-press to open "change field."
     4. Device reboots before the replacement-field list renders

    Fix on my end turned out to be removing the override of AppBase.onStop(). This is present in most of Garmins own SDK samples (38/43 in SDK 9.2.0 override onStart/onStop), so it's likely to affect other developers' fields too, not just mine

    Confirmed to break in firmware 32.20; works fine on 31.33.

  • Thank you for providing the video, that helped with some context

    I was not able to reproduce the crash following your method from the video. 

  • here's a video.   

    www.youtube.com/.../OyzPI55erlM

    by "place on an active page", i just meant change an existing field to be it.  i show that in the 2nd half of your video.   i tried your way of just creating a new page and adding it as a single field and that gives the same crash

  • Hello  

    I am trying to reproduce this on an 850 and a 1050, and have been unable to reproduce the issue, but I want to make sure we have the same reproduction steps. Both are on 32.20

    1) Side load the SimpleDataField.prg built from the SDK Samples onto the device
    2) Go to Menu -> Activity Profiles -> Road -> Data Screens -> Add New -> Data Screen -> Connect IQ -> SimpleDataField
    3) Select Back -> Check mark -> check mark -> Check mark -> back -> back -> back
    4) Select the x in the menu
    5) Select Road activity, swipe to the SimpleDataField
    6) Long press -> short press
    7) The menu of replacement fields populates just fine

    Let me know if I am missing a step or taking a different direction. Your direction of "Place on an active page" is just a little confusing to me

    Thanks

  • rewrote post with a full bug report including the fix i found.   thanks to claude for writing my bug report but not for figuring it out.   he got himself all tangled up so i had to step in.   ;)