microsoft / MixedReality-WorldLockingTools-Unity

Unity tools to provide a stable coordinate system anchored to the physical world.
https://microsoft.github.io/MixedReality-WorldLockingTools-Unity/README.html
MIT License
188 stars 45 forks source link

'pending background load task' after Hololens hard-reset #216

Open zantiu opened 3 years ago

zantiu commented 3 years ago

WLT was not longer working after I had to do a hard-reset of our Hololens 2. The WLT diagnostics HUD showed 'pending background load task' in red. It also showed 'current fragment: invalid'.

Hard reset executed as described here: https://docs.microsoft.com/en-us/hololens/hololens-recovery

The reason I did a hard reset was because when testing with our application (including WLT) the connectivity to an external server was not stable. The connectivity issues seemed to come from the Hololens since the connection to the device manager was also very sporadic. A soft reset did not fix the issue.

Maybe something went wrong during the saving of the WLT data, and then it could not be loaded again.

The issue only went away after a complete delete and reinstall of the app.

Possible solutions: (in order of preference)

fast-slow-still commented 3 years ago

Thanks for the detailed writeup! That's very helpful!

This is going to be a tricky one. The load task is run asynchronously, so it is not uncommon for a couple of frames of update to be missed while the load progresses.

So the only way (that I can think of offhand) to tell the difference between a routine "skip update because pending load" versus a "something's gone wrong and this load will never finish" would be some variant of a timeout.

I very much dislike using a timeout, but there are times when that is the only hammer in your toolbox, as the saying goes.

I will see if I can repro this by manually corrupting the save file or something. Given a consistent repro, I might be able to find a more elegant fix.

Many thanks again for taking the time to report this!

zantiu commented 3 years ago

This happened again yesterday, again after a hard reset.