I have some suggestions for any core developers that might read this:
- 1. Since this problem seems to happen regularly, it would be helpful if the block processing code would detect that the last block is corrupted and do something about it.
- 2. Since it is the last block that is corrupted, there really isn't a need to re-index the entire chain. Recovering from a corrupted last block could only take a second.
If you are able to reproduce this and have the disk space, I'd be interested to see what's in your debug.log if you run bitcoind on a new datadir with --log-level=debug, maybe it's a bug in parsing that particular block in Core 0.17.0 that's causing the syncing process to stall (could be an infinite loop).
EDIT: disregard this post, I didn't realize this thread was 2 years old (but I'm interested in knowing if this problem exists in 0.20.1).