Error: Symbol Not Found Error when installing WF

I'm getting an IQ! error every time when I installing my watchface. Only once. The watchface can be selected and it works fine without this error.

When I uninstall WF and install it I'm getting IQ! again.

There is only one CIQ_LOG.BAK file in the folder with logs on Fenix 7X:

---
Error: Symbol Not Found Error
Details: 'Failed invoking <symbol>'
Time: 2022-06-06T12:21:44Z
Part-Number: 006-B3907-00
Firmware-Version: '8.35'
Language-Code: eng
ConnectIQ-Version: 4.1.3

How to find the error?

  • you don't use anything in initialise of app instead of you have to

    app.initialise/onstart is called by app and bag so avoid call in anything redundant; in those func you should only initialise things necessary for bag and app (especially for onBackgroundData),  rest initialise 

    - for bag  in ServiceDelegate.initialise (bag "communicate" with app by BAG.exit() or storage - but storage is not safe because you don't when you call BAG.exit())

    - for app in getInitialView

  • I'm having the same "crash during install" but for me it is crashing in onUpdate and it seems that loadResource for an icon is failing.  The WF works fine after re-selecting it so it only happens after a fresh install.  

    It does seem to fit with the theory that it has something to do with the app storage, of any kind, is not ready.

    I only have two watches to test on, an F6 and Epix 2.  It crashes only on the Epix.

  • Is your code properly annotated with (:background) so only the code needed is loaded when the background runs?  Many watches have a max of 28k for the background, and you go over that, you can get some odd errors.

  • As far as I can tell, I have the correct (:background) annotations.  You'd think it would reproduce more easily if I got that wrong.  Yet, it only crashes after the installation on an Epix 2...  ???  The WF works fine after reselecting it.  I can change watch faces and come back to mine and it all works fine.

    My suspension is that there is a FW bug on the new devices.  Oleg also only had the issues on new devices if I recall correctly

  • Is your background running correctly after you reselect it?  The background will only run if the watch face is active and it's been at least 5 minutes.

    Are you doing anything in onAppInstall or onAppUpdate?  Those run in the background but don't run after something is installed and been run once

  • Yes, bg updates working fine after reselecting the WF.

    I don't have onAppInstall nor onAppUpdate.

    It's consistently crashing on this line in onUpdate:

            var icon = WatchUi.loadResource(values["icon"]);
    

    Error Name: Symbol Not Found Error
    Occurrences: 1
    First Occurrence: 2022-09-01
    Last Occurrence: 2022-09-01
    Devices:
     epixTm (Gen 2) / quatix® 7 Sapphire: 9.33
    App Versions: 0.10
    Languages: eng
    Backtrace:
    InfogramView.onUpdate:238

  • What is "values["icon"]"?  Are you sure that's always valid?

  • there is still bug in SW epix2/f7, from time to time  loadResource/properties.getValue() crashes app.

    but in my case errors are:

    Error Name: Unexpected Type Error

    Error Name: Invalid Value

    btw, you shouldn't call loadRecource in onUpdate it costs a lot 

  • I had a feeling it was a FW bug.  How did you find out about it?

  • Apps run well for most devices but for 2 not (problem is that not for whole family but for some users because I know that others have no problem) and I have read about fixes in beta.

    But in your case maybe it's your bug due to "Symbol Not Found Error".

    loadResource need symbol so what do you put into values? I suppose you obtain data from some service and you have icon for weather e.g. 800 and try to load icon 800 but symbol for icon 800 can be different because is generated by compiler.

    And you should avoid to load resource in onUpdate because you drain battery!  loadResource costs about 3000us it's (in my case whole onUpdate costs 11000us - it means loadResource increases onUpdate by 27%)