I tried to watch the process real carefully. It gets stuck on 96% for some time, and then, for a fraction of a second, it does show 100% before it displays the error message. That would be an argument for your hypothesis no. 1.
I'm so aggravated by this. Urgh!