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?

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

Reply
  • 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).

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

    I would say so. We have made changes to the 2.4 VM, but those changes were very targeted and would not have included changes to the error logging system. Do you have any other information to the contrary?

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

    There are really only three things that can be done here.

    1. Attempt to debug the problem given the minimal information that the old logging system is providing
    2. Provide a test app and instructions to us so that we can reproduce the problem.
    3. Reproduce on a device that has support for the improved data logging in CIQ_LOG.yml, and use this information to debug the problem or report to us.

    I understand it is frustrating that the information provided by the logging system isn't useful. This is something we have worked to improve. Unfortunately those improvements do not extend back to the devices that you support.

  • Do you have any other information to the contrary?

    No, I mistook the appearance of "native function" in the stack trace as a change in the way app seers were being reported. I was not previously aware of this type of report (no reference in the documentation). 

    There are really only three things that can be done here.

    Actually, there aren't, since:

    1. this is the only information I have, apart form a very incomplete report from the user, so debugging is not possible.

    2. I really don't think Garmin has the resources to pursue this option as the only instructions I could provide would start with something like - "Test environment: a racing yacht participating in a yacht race ....."

    3. If I could reproduce the condition, I wouldn't be here.

    I understand it is frustrating

    Yes, very frustrating that Garmin has not addressed the perennial challenge of legacy support faced by bundled system providers.

    I guess I'll have to face the backlash of my users by floating the idea of termination support of my app on CIQ-2 devices.