Reading CIQ_LOG.txt

Former Member
Former Member
Hello,

Some poeple send me le CIQ_LOG.txt file after crash with my watchFace.

But I don't know how to read this.

two people send me realy similar error log
ERROR: Unexpected Type Error
DETAILS:
STORE_ID: 42fc7cff9c514bc7b230c7a4c5a8f6a3
CALLSTACK:
@PC = 0x10002f95
@PC = 0x100029c8
@PC = 0x10002975
@PC = 0x10002577
@PC = 0x10002341
@PC = 0x10001bb5
@PC = 0x10004873
@PC = 0x10004206
@PC = 0x100040da

how to use callStack adress is there some tools on eclipse ?
the store ID isn't the same that Manifest AppID: d6d9c2a2e4834eb6b694b43d720f9e2b
How can I be sure that's my watchFace which crashe ?

The error seem to be only on fr235, is there something to know about the divice ?
memory usage on simulator max to 53k

In advance, thanks for your help.

Gilles
  • Without looking to the source, I'm pretty sure circular dependency error doesn't have a stack because the issue is detected during app shutdown.. after the work area for the app has exited. If you run the app in the sim, you should be able to use the memory viewer to see the cycle. If I have some time tonight I can look into your code to see if the cycle can be easily removed.

    As for the call stack, if you have the .iq file, you should be able to get the debug.xml for the device from there. Just change the file extension from .iq to .zip and then extract the files from the .zip. The extracted .zip will have a bunch of folders named 006-BXXXX-00 where XXXX is the device id shown at the top of the crash log. In this case you'd look for 006-B2431-00/debug.xml.

    Once you have that file, you need to decode the stack. For each address in the stack trace, you want to find the pcToLineNum entry with the highest pc value that is less than that address. That will give you the file name and line number.

    I actually have a python script around here somewhere to decode the stack. I wrote it after the ConnectIQ Summit last year and never did anything with it. I'll see if I can find it and I'll provide the source.
  • Some info on the call stack, the values correspond to values in the debug.xml file (when compiling your program there's a .prg and .prg.debug.xml created).

    First translate the 0x values (which are hexadecimal) to decimal values:
    0x000e117b -> 921979 Then look up this decimal value in the debug.xml "pc=" entries to find out what method, source and line it corresponds to. Only thing is that it doesn't correspond directly but at least gives you an area to look.

    The alternative is indeed giving a prg with debug info to a user (but in my experience it's not often that users are too willing to help out unfortunately)... Also, this way settings can not be changed so if there are some settings possibly causing issues this won't be a very convenient way of debugging.
  • Former Member
    Former Member over 7 years ago
    Hello, thanks for all this information, I'll take a look to the debug.xml and try to find something.

    But the callStack values of ERR_LOG isn't in the field of the watchface, not sure it could help this time


    In fact it's realy strange, because this circular dependency don't happen each times (one or two a day) and no for evryone ...

    The user which send me the error don't do anything when it's happen (no switch to widget, no activity, no press button, etc...). I see his parameters and try it on simulator without find anything.

    I talk with some others users but it's seem to work good for them ...


    I'll send the ERR_LOG and CIQ_LOG to garmin. Waiting for news, I'll tell you when they answer me ...
  • Sorry, yes. ERR_LOG.txt is for device software crashes. Those can't be decoded given information that you have access to. The only way to decode them is to sent them in to us for processing. I was responding to the original question about the data from CIQ_LOG.txt (consistent with the subject of this post).

    Travis
  • Just following up with some additional information... It looks like I failed to answer all of the questions initially asked.

    how to use callStack adress is there some tools on eclipse ?

    I'll provide my python script once I find it.

    the store ID isn't the same that Manifest AppID: d6d9c2a2e4834eb6b694b43d720f9e2b

    The STOREID field is the UUID for your app in the App Store. In this case, the app id goes to this app in the store... https://apps.garmin.com/en-US/apps/4...0-c7a4c5a8f6a3

    How can I be sure that's my watchFace which crashe ?

    If the STOREID matches up with the App Store UUID for your app, then the crash is from your app.

    The error seem to be only on fr235, is there something to know about the divice ?

    It is likely that there is some difference between the fr235 and whatever you're testing on. If you can't reproduce this on the simulator, it is likely to be pointing out an issue with the simulator as well.
  • I couldn't find the source, so I wrote it again. I tested on python 2.7, but chances are good it will work with python 3.x. Once you extract it from the attached .zip, you'd execute it like this...

    $ python stack_decode.py -c CIQ_LOG.txt Test.debug.xml /connectiq-sdks/connectiq-sdk-2.4.5/bin/api.debug.xml
    ERROR: Unexpected Type Error
    DETAILS:
    STORE_ID: 42fc7cff9c514bc7b230c7a4c5a8f6a3
    CALLSTACK:
    initialize at /Users/vitek/Documents/workspace/source/TestDelegate.mc:7
    getInitialView at /Users/vitek/Documents/workspace/source/TestApp.mc:20


    The argument to the -c parameter is the name of the file that contains the crash log data. This can be - if you want to read the data from stdin. The remaining arguments are the debug.xml file that is build with the release version of your application and then the api.debug.xml from the SDK that you used when building the application.

    Travis
  • Former Member
    Former Member over 7 years ago
    Thanks for the tool, keep it for the next time ;)