What happened to error logging?

I have been pretty quiet for a few months as the pandemic's cancellation of yacht racing has seriously impacted the use of  my sailing app.

However, I have been busy but the latest update is crashing in the field with this pretty uninformative error log which was captured on a VA-HR running 5.20:

ERROR: Unhandled Exception
DETAILS: NONE
STORE_ID: 74c474f841404794afb7f56817083bd5
CALLSTACK:
UnexpectedTypeException: Expected Number/Float/Boolean/Long/Double, given null
native function
native function
native function

I am going to attempt to reproduce it in the simulator, but what happened to the error logging?

  • ERA seems to be working fine, but if I recall, some older devices aren't supported and never have been. If the device uses ciq_log.txt instead of ciq_log.yml, I don't think you'll see anything.

  • I have been unable to replicate the bug and wonder if the "native function" line in the stack trace refers to my code or CIQ. 

  • The native function entries should be just that... native functions provided by the device firmware. I'm not sure how you'd get a stack where there were no user functions, but I suppose it is possible.

    This is a case where having access to the original stack addresses and the debug xml data would be incredibly useful. Unfortunately, it looks like the log is from the old days of CIQ_LOG.txt (before we started capturing all the juicy details).

  • Hmmm, not sure I follow that.

    Here are the  last four crash reports from ciq_log.txt from one of my users running my app on a VA-HR :

     ERROR: Unexpected Type Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: 9c692f2757d6448891ae5dd846a4ad26
    CALLSTACK:
    	@PC = 0x10001fb5
    	@PC = 0x1000253e
    	@PC = 0x10000db0
    
    ERROR: System Error
    DETAILS: Failed invoking <symbol>
    STORE_ID: a9c9b9811f4c4399a2707d6c7317893e
    CALLSTACK:
    	@PC = 0x10000031
    
    ERROR: Unhandled Exception
    DETAILS: NONE
    STORE_ID: 74c474f841404794afb7f56817083bd5
    CALLSTACK:
    UnexpectedTypeException: Expected Number/Float/Boolean/Long/Double, given null
    native function
    native function
    native function
    
    ERROR: Unhandled Exception
    DETAILS: NONE
    STORE_ID: 74c474f841404794afb7f56817083bd5
    CALLSTACK:
    UnexpectedTypeException: Expected Number/Float/Boolean/Long/Double, given null
    native function
    native function
    native function
    
    

    As you can see, the first two provide a stack trace, which were caused by bugs in my code which I have since fixed.

    The last two are mysterious, current and worrying as I have no way to replicate or fix them.

  • Hmmm, not sure I follow that.

    What, specifically, are you not following?

  • What I don't follow (specifically) is how that response assists me to to resolve my current problem, characterised by a user's report of my app crashing accompanied by the provided error log.

  • My response was simply providing an answer to your question...

    wonder if the "native function" line in the stack trace refers to my code or CIQ. 

    The provided error log (the errors with native function in the stack) are not very helpful because they don't provide the addresses of the native code in question.

    You should be able to decode the call stacks listed in the other failures using the normal method that has been discussed previously.

  • So ,would it be fair to say that nothing has happened to error logging on CIQ-2 devices like the VA-HR?

    For app errors, it continues to report the stack trace (cunningly disguised in hex to make it hard to find!).

    In the provided examples, where the stack trace lists "native function", the error was not in the (my) app code, but deeper in the Garmin code.

    If that is the case, what do I do, as a dedicated developer, to resolve this instability in my long-running app ?

    (I know about ERA which looks really neat, but I still have to support my user base on CIQ-2 devices).

  • I read that there are 2 types of log files. CIQ_LOG.TXT and CIQ_LOG.YML

    Under which Version of devices or SDK does the YML file exists? I have a Fenix3 and a Fenix5+ and both of these are still on the CIQ_LOG.txt.

    (btw - how does one "quote" replies using this interface? 

  • (btw - how does one "quote" replies using this interface? 

    Highlight the text and there will a "quote" button.

    The f5+ has the .yml file (as long as it's on current FW).  What you may be seeing is the ciq_log.bak file.  Once the yml file is sent over to the severs, it becomes a .bak file as an indication it's been sent (this is how ERA gets the files).  Or it could be the .txt is still there from long ago when txt files were used on it.