Acknowledged
CIQQA-3255

bug: vivoactive3 returns true for ActivityMonitor.Info has :pushes

I have the following code in one of my menus:

        if (ActivityMonitor.Info has :pushes) {
            addItem(settings, Rez.Strings.activityTypeWheelchairPushWalk, 65000);
            addItem(settings, Rez.Strings.activityTypeIndoorWheelchairPushWalk, 65086);
        }

And I got an Invalid Value exception in ERA:

Error Name: Invalid Value
Occurrences: 1
First Occurrence: 2025-05-26
Last Occurrence: 2025-05-26
Devices:
vívoactive® 3: 8.20
App Versions: 0.9.6
Languages: ces
Backtrace:
SessionDebug.createSession:5
SessionDebug.session65086:73
SessionDebug.createSessionDebug:94
HikerAppView.createSession:66
SettingsMenu2.onSelect:220

However this can only happen if ActivityMonitor.Info has :pushes is true for vivoactive3.

In the simulator (SDK 8.1.1) I can't reproduce the problem neither with nor without --disable-api-has-check-removal 

I am not 100% but 99% sure that in this build I used --disable-api-has-check-removal so if I understand correctly then this is a bug in the vivoactive firmware. Or in the simulator, that returns false, but then why does va3 throw the Invalid Value exception when calling: 

ActivityRecording.createSession({:name => "name", :sport => 65 as Activity.Sport, :subSport => 86 as Activity.SubSport});
(which BTW doesn't fail in the simulator)

  • Here's the crash log although I'm 100% sure it's exactly the same as what you posted, and it's crashing for the reason that you guessed. Obviously the crash is not a surprise, but only the fact that the wheelchair activity types are present in the menu.

    Error: Invalid Value
    Details: 'Failed invoking <symbol>'
    Time: 2020-12-06T03:33:41Z
    Part-Number: 006-B2700-00
    Firmware-Version: '8.20'
    Language-Code: eng
    ConnectIQ-Version: 5.1.1
    Store-Id: 0ffbd4ea-017d-4ef0-9846-a2c8050f1bfc
    Store-Version: 7
    Filename: AC633320
    Appname: Hiker App
    Stack:
      - pc: 0x10000cc5
      - pc: 0x10000baf
      - pc: 0x10000838
      - pc: 0x100042f0
      - pc: 0x1000573b
  • You're welcome!

    > So it's not replicable

    But it *is* replicable - just with the version in the store, but not with the PRGs you provided.

    Like I previously said, when I install your app from the store on the exact same physical va3 (with the same firmware), I see the behaviour which you implied in the bug report:

    - the 2 wheelchair activity options are available in the Activity Type menu [*]

    - if I select either of them, the app crashes (probably because VA3 doesn't support those activities, since VA3 doesn't have wheelchair mode at all)

    [*] I don't think this necessarily proves that VA3 "returns true for ActivityMonitor.Info has :pushes", since I've already disproved that with the test data field and the sideloads.

    As a matter of fact, I just reinstalled the store version and made it crash exactly as described above. The 2 wheelchair menu items are displayed every time and the crash happens every time one of them is selected. Meanwhile I still have one of "Hiker App B" sideloads installed, and it does *not* display the 2 wheelchair menu items.

    Like I said, I'm not sure what's different about the store version, but *something* is different.

  • Thank you. So it's not replicable, I would consider this to be a FW bug OR there's something else strange going on (I don't know maybe some info in the ERA report is misleading)

  • Sure np. A buddy lent me his va3 a while ago, so it's nice to finally have a use for it, other than marvelling at how bad Garmin's touch-first UI was in 2017. Seriously, by looking at older Garmins, you do get an appreciation for all the UI/UX improvements Garmin has made.

    I did notice that:

    - I can only sideload one app at a time (I assume you used the same app-id for both PRGs)

    - both apps appear in the activity list as "Hiker App B"

    My findings for both PRGs:

    - neither of the wheelchair options exist in the activity type menu (obviously there's no crash, since there's nothing for me to select that would crash the app in same way that you reported)

    Have no idea why the store version of the app behaves differently, especially since it was last updated April 11 (after the current 8.1.1 SDK was released), and I assume you used the latest SDK to build the store version as well as the PRGs you posted.

    Here's the logs:

    HIKERAPP.txt
    1607220107 19:25:47 HikerApp
    1607220107 19:25:47 HikerBaseApp.initialize: memory: free:66264, used:60768, total:127032
    1607220107 19:25:47 onStart
    1607220108 19:25:48 setGnssConfig(1): GNSS: GPS
    1607220108 19:25:48 getInitialView
    1607220108 19:25:48 KPAY.getAccountToken: 80a3c7e94ef98ade41330a116433ec10cd538693
    1607220108 19:25:48 KPAY.triggerUpdate
    1607220108 19:25:48 triggerWebEvent: 60
    1607220108 19:25:48 scheduleWebEvent: 60
    1607220108 19:25:48 UV.loadUV: KPay invalid
    1607220108 19:25:48 requestFetch: true
    1607220108 19:25:48 createSession: Walk (11000)
    1607220108 19:25:48 readSettings
    1607220108 19:25:48 onLayout
    1607220108 19:25:48 startUpdates
    1607220108 19:25:48 onShow
    1607220108 19:25:48 waitForGnss: 1, true
    1607220108 19:25:48 onHide
    1607220109 19:25:49 pauseUpdates
    1607220109 19:25:49 startMinuteTimer
    1607220109 19:25:49 WaitForPositionView.onShow: 1, false
    1607220110 19:25:50 onBack: yes
    1607220110 19:25:50 onKey: 5, 2
    1607220110 19:25:50 WaitForPositionDelegate.close: skip GPS fix
    1607220110 19:25:50 onShow
    1607220110 19:25:50 waitForGnss: 1, false
    1607220111 19:25:51 onMenu: no
    1607220111 19:25:51 openSettings
    1607220112 19:25:52 onHide
    1607220112 19:25:52 pauseUpdates
    1607220112 19:25:52 setGnssConfig(0): GNSS disabled
    1607220112 19:25:52 startMinuteTimer
    1607220113 19:25:53 s.onMenuItem: activityType
    1607220117 19:25:57 t.onMenuItem: Mountaineering: 16000
    1607220117 19:25:57 createSession: Mountaineering (16000)
    1607220117 19:25:57 readSettings
    1607220117 19:25:57 activityTypeId: 11000 => 16000
    1607220118 19:25:58 onShow
    1607220118 19:25:58 waitForGnss: 0, false
    1607220118 19:25:58 onTap: 0
    1607220118 19:25:58 onBack: yes
    1607220118 19:25:58 onKey: 5, 2
    1607220118 19:25:58 doAction: 1
    1607220118 19:25:58 onLapOrBack
    1607220118 19:25:58 onStop
    1607220118 19:25:58 stopUpdates
    1607220118 19:25:58 setGnssConfig(0): GNSS disabled
    1607220118 19:25:58 onHide
    1607220118 19:25:58 pauseUpdates
    1607220118 19:25:58 setGnssConfig(0): GNSS disabled
    1607220118 19:25:58 startMinuteTimer
    1607220118 19:25:58 onStop
    1607220118 19:25:58 onStop
    1607220118 19:25:58 stopUpdates
    1607220118 19:25:58 setGnssConfig(0): GNSS disabled
    1607220118 19:25:58 onStop: disable GPS
    

    HIKERAPP2.txt
    1607220330 19:29:30 HikerApp
    1607220330 19:29:30 HikerBaseApp.initialize: memory: free:4800, used:23928, total:28728
    1607220330 19:29:30 onStart
    1607220330 19:29:30 getServiceDelegate
    1607220330 19:29:30 onStop
    1607220339 19:29:39 HikerApp
    1607220339 19:29:39 HikerBaseApp.initialize: memory: free:69016, used:58016, total:127032
    1607220339 19:29:39 onStart
    1607220339 19:29:39 setGnssConfig(1): GNSS: GPS
    1607220339 19:29:39 getInitialView
    1607220339 19:29:39 KPAY.getAccountToken: 
    1607220340 19:29:40 KPAY.generateAccountToken: 80a3c7e94ef98ade41330a116433ec10cd538693
    1607220340 19:29:40 KPAY.triggerUpdate
    1607220340 19:29:40 triggerWebEvent: 60
    1607220340 19:29:40 scheduleWebEvent: 60
    1607220340 19:29:40 UV.loadUV: KPay invalid
    1607220340 19:29:40 requestFetch: true
    1607220340 19:29:40 createSession: Hike (17000)
    1607220340 19:29:40 readSettings
    1607220340 19:29:40 onLayout
    1607220340 19:29:40 startUpdates
    1607220340 19:29:40 onShow
    1607220340 19:29:40 waitForGnss: 1, true
    1607220340 19:29:40 onHide
    1607220340 19:29:40 pauseUpdates
    1607220340 19:29:40 startMinuteTimer
    1607220340 19:29:40 WaitForPositionView.onShow: 1, false
    1607220342 19:29:42 WaitForPositionDelegate.onMenu
    1607220342 19:29:42 openSettings
    1607220343 19:29:43 s.onMenuItem: activityType
    1607220349 19:29:49 t.onMenuItem: Stair Stepper: 4016
    1607220349 19:29:49 setGnssConfig(0): GNSS disabled
    1607220349 19:29:49 createSession: Stair Stepper (4016)
    1607220349 19:29:49 readSettings
    1607220349 19:29:49 activityTypeId: 17000 => 4016
    1607220351 19:29:51 WaitForPositionView.onShow: 0, true
    1607220351 19:29:51 WaitForPositionView.onShow: close
    1607220352 19:29:52 onShow
    1607220352 19:29:52 waitForGnss: 0, true
    1607220352 19:29:52 onBack: yes
    1607220353 19:29:53 onKey: 5, 2
    1607220353 19:29:53 doAction: 1
    1607220353 19:29:53 onLapOrBack
    1607220353 19:29:53 onStop
    1607220353 19:29:53 stopUpdates
    1607220353 19:29:53 setGnssConfig(0): GNSS disabled
    1607220353 19:29:53 onHide
    1607220353 19:29:53 pauseUpdates
    1607220353 19:29:53 setGnssConfig(0): GNSS disabled
    1607220353 19:29:53 startMinuteTimer
    1607220353 19:29:53 onStop
    1607220353 19:29:53 onStop
    1607220353 19:29:53 stopUpdates
    1607220353 19:29:53 setGnssConfig(0): GNSS disabled
    1607220353 19:29:53 onStop: disable GPS
    

  • Wow, thank you very much for the offer!

    Here's the prg (with --disable-api-has-check-removal):

    HikerApp.prg

    And here's the same version without --disable-api-has-check-removal:

    Please send me the logs, and if there's a crash than the stack trace