ERA - Unhandled Exception?

It would be very helpful to debugging if the nature of the "Unhandled exception" was also provided in the error report in ERA:

Error Name: Unhandled Exception
Occurrences: 1
First Occurrence: 2020-06-25
Last Occurrence: 2020-06-25
Devices:
    fēnix® 5X / tactix® Charlie: 19.10
App Versions: Beta 3.8.7
Languages: eng
Backtrace:
    Engine.recalcTWDfromPosFlag:1218
    Engine.checkForATackOrJibe:1284
    Engine.doRacingStuff:642
    Engine.dispData:593
    Engine.GPSData:1678

is useful to locate the issue in the code, but just what is triggering the error on line 1218? 

TWD = normalizeHeading(grooveCOG  -180 + jibeAngle/2); 

Yes, it's a (very) intermittent error and no, I can't repro in the lab.

  • The CIQ_LOG.yml situation is very different. We put restrictions on the data that is written to this file because everything in that file is automatically uploaded to Garmin and is viewable by the developer. If we allowed the developer to control the data put into that file, that system could be abused that to get access to the sensitive data without the user's knowledge.

    I think that's my point... the CIQ_LOG.yml is getting both the "Error:" and the "Details:" as you see below:

    Error: Out Of Memory Error
    Details: 'Failed invoking <symbol>'
    Time: 2020-01-01T05:51:37Z
    Part-Number: 006-B2697-00
    Firmware-Version: '15.10'
    Language-Code: eng
    ConnectIQ-Version: 3.1.6
    Filename: RACEQS

    but ERA is only getting the "Error:" not the "Details:"

    Error Name: Unhandled Exception
    Occurrences: 6
    First Occurrence: 2020-06-24
    Last Occurrence: 2020-07-05
    Devices:
        vívoactive® 3 Music: 5.60
        vívoactive® 4: 4.70
        vívoactive® 3: 7.30
        fēnix® 5 / quatix® 5: 20.00
    App Versions: Beta 3.8.7
    Languages: deu, eng, fre
    Backtrace:
        Dashboard.formatTimeToHHMM:257
        Dashboard.buildCapturedMarksMenu:288
        Dashboard.dispMarksMenu:99
        Dashboard.onMenuItem:554
     (different crash, I know, but the principle is there)

    You say "We put restrictions on the data that is written to this file because everything in that file is automatically uploaded to Garmin and is viewable by the developer." which is fine and understandable in the context of GDPR, but it seems you are further filtering out the "Details:" in the CIQ_LOG.yml.

  • The Out Of Memory error that you've pasted above is not from an exception, it is from an internal VM error. We control these strings 100% of the time, so we can provide that data without concern that it will be a security problem.

    You already demonstrated that the exception message is not logged to CIQ_LOG.yml when you pasted the output form your test program running on a fenix5 above.

    Just to be crystal clear, I will repeat myself in uppercase and bold text to get my point across... WE DO NOT PUT THE EXCEPTION MESSAGE STRING IN CQ_LOG.YML.

    So back to your original complaint... We do not log the exception message strings to CIQ_LOG.YML because security. Yes, a developer could use this to help debug an application, but a bad actor could use it to do something dastardly, and we have to do what we can to prevent that.

  • The Out Of Memory error that you've pasted above is not from an exception, it is from an internal VM error. We control these strings 100% of the time, so we can provide that data without concern that it will be a security problem.

    OK, I think I've got it. 

    I wasn't aware of the difference between the way you report internal VM errors and exception errors, so when I saw some "Details:"  in the CIQ_LOG file (from VM errors as above) but none in ERA, I incorrectly deduced that ERA was hiding errors that were in CIQ_LOG. 

    Thanks for clearing it up.