bitcoin core uses leveldb, there is some bug where it occasionally gets corrupted. it's pretty horrible. usually you don't need to redownload, just reindex.