When running mongodump with the --repair option, the intent is to traverse each document in each extent for a collection, starting both at the first extent and traversing forward, then from the last extent and traversing backwards.
The current implementation doesn't stop at extent boundaries and writes out all documents after the end of the current extent, then repeats this for the next extent, and so on. It does the same thing for the backwards pass.
This causes the dumped file to be much larger than the original collection and overruns 100% in the progress meter.