What does "ERROR: System Error" mean?

I'm getting these errors from my alpha tester in CIQ_LOG.txt .
ERROR: System Error
DETAILS: Failed invoking <symbol>
STORE_ID: 00000000000000000000000000000000
CALLSTACK:
C:\alan\projects\raceQsGarmin\raceQs\source\db_navigation.mc (onUpdate:111)

ERROR: System Error
DETAILS: Failed invoking <symbol>
STORE_ID: 00000000000000000000000000000000
CALLSTACK:
C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (dispData:1143)
C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (GPSData:833)

ERROR: System Error
DETAILS: Failed invoking <symbol>
STORE_ID: 00000000000000000000000000000000
CALLSTACK:
C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (checkForMarkRounding:1830)
C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (dispData:1679)
C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (GPSData:849)

ERROR: System Error
DETAILS: Failed invoking <symbol>
STORE_ID: 00000000000000000000000000000000
CALLSTACK:
C:\alan\projects\raceQsGarmin\raceQs\source\db_navigation.mc (onUpdate:125)



Does anyone know what to make of "System Error"?

Yes, I have looked at the referenced lines, and they are fine, executed many times without issue. I'm not looking for a solution to the cause of the crash, but to understand what "System Error" tells me.
  • Former Member
    Former Member over 7 years ago
    Hi
    The important information is "Failed invoking <symbol>" which means you're using a function or a variable that does not exist...
    Regards
  • Former Member
    Former Member over 7 years ago
    Failed invoking <symbol> actually means very little it is the general error message that gets written if a failure occurs when executing opcodes and no other error message is set.

    System Error means a call the VM made to the system, that we assume will not fail, has failed. This is VM error, or possibly a device error that we will definitely want to investigate. There is also an outside chance there is just something faulty with your testers unit (e.g. a hardware peripheral is failing and returning errors when it should not).

    If you can detail what calls you are making in the locations you've listed in those call stacks, that would allow us to start investigating what types of system failures could produce the error at those lines. If we are lucky they will all point to the same VM call.
  • If you can detail what calls you are making in the locations you've listed in those call stacks, that would allow us to start investigating what types of system failures could produce the error at those lines. If we are lucky they will all point to the same VM call.


    The code at C:\alan\projects\raceQsGarmin\raceQs\source\db_navigation.mc (onUpdate:125)
    is highlighted below:


    else {// -1-> TTM,
    fields[0] = formattedTTM;
    fieldLabels[0] = "TTM";
    valueFonts[0] = Graphics.FONT_SYSTEM_MEDIUM;
    valuesPos[0] = [screenWidth/2 + 68 //142
    ,58 ]; //TTM
    fieldUnits[0] = " " ;
    }
    fieldUnits[1] = turnHand;
    for (var i = 0; i < fields.size(); i++) {
    //Title
    dc.setColor(Graphics.COLOR_BLUE, Graphics.COLOR_TRANSPARENT);
    dc.drawText(labelPos[0],labelPos[1], Graphics.FONT_SYSTEM_MEDIUM, fieldLabels, Graphics.TEXT_JUSTIFY_LEFT);

    [/CODE]
    The code at C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (checkForMarkRounding:1830)
    is highlighted below:
    markPrefix = "WM:";
    myApp.setProperty("tackingAngle", tackingAngle.abs());
    pointOfSailing = "downwind";


    These crashes are happening remotely from me on my alpha tester's device and I am unable to replicate them in field testing.

    My tester recorded the GPS position data of the track with a separate device and I have been able to execute these blocks of code successfully when I run the same track data through my app using my simulator mode.

    (I have a code module in my app, along the lines of the "FIT Data/Simulate Data" feature Simulator, that replaces the pumps the data from a pre-recorded track file to the app as a positionInfo Dictionary. )

    I find the CIQ-LOG info helpful for debugging, but find it frustrating with its verbosity and obscurity <symbol> provides me with no additional information.
    A timestamp of the occurrence would also help for remote debugging.
  • Former Member
    Former Member over 7 years ago
    Is it possible for you to post the lines at
    C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (dispData:1143)
    and
    C:\alan\projects\raceQsGarmin\raceQs\source\engine.mc (checkForMarkRounding:1830)

    No context is necessary if you prefer to not expose code in that file. You are also welcome to email the lines to the ConnectIQ at garmin.com

    It is important to understand that "System Error" is not something you should be seeing. There is no useful debugging information for you because whatever went wrong is not something we consider an application error. The VM is indicating that something on the system produced unexpected behavior. There are a few things this could indicate.

    • This might be something your application did that we failed to anticipate, and produce an error for.
    • It could also be an error in the VM code that is producing unexpected behavior.
    • It could an aspect of the device failing that is expected to always function.


    The first two are both VM bugs. The VM is either failing to produce the correct error, or causing an error itself.
    The last would indicate a faulty device, but based on the error lines you posted so far, that seems unlikely. My best guess given the random nature of the two lines you have posted is that there is an error in the VM.

    Since you haven't yet managed to reproduce this experimentally, we don't have much to go off of, but if you can send the other two crash lines, we will continue to investigate. We may want to have your tester run a debug version of the system software if possible. This software build would potentially crash the device and log information about where a failure occurred to the system's ERR_LOG.TXT. Let me know if you think they would be open to this.
  • Former Member
    Former Member over 7 years ago
    fieldUnits[1] = turnHand;

    How is "fieldUnits" initialized ? Are there really 2 items in it ?

    myApp.setProperty("tackingAngle", tackingAngle.abs());

    is tackingAngle a double ? abs only apply to doubles

    Note you can add println statements and ask your tester to create an empty TXT file on the watch to keep a reccord of the println's output
  • Former Member
    Former Member over 7 years ago
    How is "fieldUnits" initialized ? Are there really 2 items in it ?


    is tackingAngle a double ? abs only apply to doubles

    Note you can add println statements and ask your tester to create an empty TXT file on the watch to keep a reccord of the println's output


    The answers to those questions are not relevant to the error reported here. If fieldUnits was not an array, object, or hash, an unexpected type exception would be generated. If the array did not have a index of 1, an array out of bounds error would be generated.

    System Errors do not indicate an error with the code at the backtrace, they indicate an error with the underlying VM execution, so you should not try to evaluate errors with the code in question. We need to investigate "under the hood" to figure out what is triggering these errors. More information about the code at the point it is triggering can be helpful to that investigation, but the context of that code is less relevant.
  • just wanted to check and see if all of the above about "System Error" is still true today?  in that there is nothing on the app or dev side that us developers can do?


    Just looking at my era logs today for the past couple of months and they are all System Errors at various places in my code.  Around 300 in the past month, but if there is nothing i can do, I guess I just ignore them...

  • 300 in a month is very unusual.  What type of app and which device?

  • datafield, but over 6 weeks, so a month and a half.  and a lot of active users.  not really getting too many customer complaints and most of my code is behind try/catch so hopefully these aren't bubbling up to the users.  well, not sure if a system error is caught in a try catch though.  edit:  lots of different devices are getting it.  840,1040, 1030, fenix's  

  • well, not sure if a system error is caught in a try catch though

    Unfortunately not. If it was, you wouldn't be seeing ERA logs. If you're seeing an ERA log, then the user is seeing a crash.