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.

Parents
  • 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

Comment
  • 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

Children