Stack trace addresses in FW.

I have been down this path before, but I don't think I ever made sense of the response.

Here's an error log report from my watch yesterday. (Nothing in ERA - it's still reporting "A server error has occurred...")

Error: Out Of Memory Error
Details: 'Failed invoking <symbol>'
Time: 2021-11-18T07:58:17Z
Part-Number: 006-B2697-00
Firmware-Version: '24.10'
Language-Code: eng
ConnectIQ-Version: 3.2.5
Store-Id: 74c474f8-4140-4794-afb7-f56817083bd5
Store-Version: 43
Filename: 4C065B22
Appname: raceQs
Stack: 
  - pc: 0x300035c0
  - pc: 0x300033d0
  - pc: 0x10002946
  - pc: 0x10001256

The first two addresses of the stack trace  (- pc: 0x300035c0 - pc: 0x300033d0) do not lie in my code, so why are they being provided to me as the developer?

I suspect a memory leak in the FW VM as I am, (and have been for the past four years!)  meticulously managing the memory in the app. The crash occurred after 70 minutes of faultless running.

Can anything be deduced from the fact that the first two addresses of the stack trace are in the FW VM?

  • Do you have any first-hand experience with similar unexplained Out Of Memory errors?

    I'm currently 7 timezones ahead of my normal spot (in Canada) so it's well past the end of my day. Tomorrow I'll go through my notes and see what I come up with because I've run into lots of debugging issues. And don't get me started that the stack trace in the CIQ_LOG.YML is in hex while the debug XML is in decimal.

  • And don't get me started that the stack trace in the CIQ_LOG.YML is in hex while the debug XML is in decimal.

    Yes, it's quite unfathomable - a couple of lines of code is all that would be required.

    I look forward to the fruits of your research. 

  • Sorry if I move away from your question regarding the stack trace and bother you.

    But I wonder how it is possible to run the "ConnectIQ Version: 3.2.5" on a Fenix 5. According to the device list, the Fenix 5 has an Api level of 3.1.0 . Possibly your crash is due to an incompatibility of the SW components.

  • I  see  "connectIQVersion": "3.1.6" in my devices.json. I have no idea what it means! It also has "firmwareVersion": 1510, yet my device is reporting Firmware-Version: '24.10' . I think it's a "Red Herring".

    I should have added this extra point to my crash characteristics:

    7. ERA reports crashes across a number of devices.Unfortunately the broken ERA server prevents me from reviewing the details.

    I'm pretty sure if there was an incompatibility in the VM versions that the crash would not be so difficult to replicate.

  • I  see  "connectIQVersion": "3.1.6" in my devices.json. I have no idea what it means! It also has "firmwareVersion": 1510, yet my device is reporting Firmware-Version: '24.10' . I think it's a "Red Herring".

    3.2.5 is the version of the SDK used to build the app

    On the device, under "About" you can also see the version of the VM on the device.  In this case, 3.1.x

  • Yes, but what is the significance of 3.1.6 in devices.json?

  • If you mean in the device file associated with the SDK, that's the min version of CIQ allowed for that device.  If a device with a 3.1.5 version of CIQ tries to install your app. the user will be told they must update their device FW.

  • Understand there are actually 4 different CIQ versions involved with publishing an app.

    There's the min version for an app.  If you use 3.2.0, the app will only be built for devices that fit this.

    There's the min version for a device, so only devices that meet or exceed this can install your app, and a warning is given to the userif that's not the case

    There's the version of CIQ running on the device (see above)

    And there's the version of the SDK used to build the app

  • I mentioned of description "important code". It rather impossible to get out memory in  "dc.setColor" without firmware error.

    No, you don't have real background (no permission in your app).

    What do you do in function GPSData? Collecting gps positions?

    If you get error in enableLocationEvents after minutes form app start it means you call enableLocationEvents many times not once?

  • Is it any wonder newcomers to the Garmin ecosphere get confused? I've been here over six years and I'm still confused!Blush