Acknowledged

Strange White Screen of Death Bug

I have a small data field that has experienced this about 5 times. After publishing an update it will display only a white screen - absolutely nothing written to the screen. It is actually running, just doesn't display anything.

I've tracked down the issue. The Garmin\Apps\DATA\*.IMT file is deleted somehow. The *.DAT and *.IDX files are still there. If I remove the *.DAT file and reboot the EDGE device, then the DAT and IMT files are re-generated, and the data field works as expected and displays the screen properly.

So there is nothing going on in the code itself. Something is triggering the EDGE firmware to delete the IMT file, which causes the rendering engine to not display anything.

My data field uses background processing to grab the EDGE temperature (and uses Storage to communicate between the BG and FG processes). It uses Properties.getValue for User Settings. And it uses the Generic ANT channel to interact with a TEMPE sensor. I assume this strange bug is somehow related to Storage.

This doesn't happen with every update, but it has happened about 5 times, so definitely not a one-time thing. One of my users also reported it, so this could impact many.

I'm using an EDGE 1030 with the latest firmware and SDK 4.2.4.

  • This just happened again. This time I can replicate the issue at will. When I got the white screen, I saved the D:\Garmin\Apps\DATA files (*.DAT and *.IDX). I then deleted those two files and restarted the EDGE 1030. The data field worked fine. Then I plugged it back in and replaced the new DAT and IDX files with the prior ones, and I got the pure white screen again. So this is now a repeatable condition. The "bad" DAT and IDX files are 2.5MB and 1.5MB in size. The newly generated ones are 2KB and 1KB in size. So something seems to be corrupting the DAT and IDX files and the data field, when presented with these two files, for some strange reason, does not display any information on the screen.

    I can send you the two BAD and two GOOD files if that is helpful to try to figure out what might be causing this... Let me know. You can e-mail me at: [email protected] if you'd like me to ZIP these up and send them.

  • This isn't something we've been able to reproduce, and the product team has had no similar reports of this. I would be interested to know whether any other developers have experienced this issue—if so, the product team would be interested in investigating further. 

  • I don't know why I didn't think of this... with the data field working properly... I plugged it in and removed the IMT file. Then started it back up. And it worked fine. After the restart, the IMT file is regenerated. So the missing IMT isn't the issue, just a symptom of the issue. Ugh.

  • Hey Brandon. My Storage.setValue/getValue logic remained unchanged from release to release. It is only used in the BG logic to grab the Device Temp. That code is stable. I could reboot my EDGE and it didn't fix the problem. However, I finally figured out the issue (missing IMT file) and the fix, which was to remove the DAT file and reboot, which caused the device to re-create the DAT/IDX/IMT files...

    I first experienced this issue after making some changes to my properties.xml file. I had added a new User Setting and changed a default value of a setting. But those User Settings have been stable now and I just experienced it again after making some minor tweaks to a .MC file.

    I've only seen this happen maybe 5 times out of many dozens of updates as I've been refining the field's logic and adding features. Unfortunately, it isn't something that happens every time or even often (harder to debug). It doesn't generate an ERA report or a LOG file report. Really frustrating, esp since it appears it can happen to other users too.

    If there is anything I can do to try to provide more insight let me know...

  • The IMT files are related to app storage, as you guessed. I don't know for certain, but I assume the IMT file is rebuilt when an app is updated in case the storage scheme being used by the app is different from whatever earlier version had been installed. I'm not sure why this would cause the device to draw a blank, white screen, however.

    Since this seems to be associated with app updates, does this happen every time you update the app? Have there been changes to to the way newer versions of your app use storage when this has occurred?