That sounds like a corrupted message database. (I'd use
SMS Backup & Restore to save it, fix the resultant .xml file, clear the existing database, then insert the entire .xml file - but that requires knowledge of SQL. If you don't need the current messages, of saving them as text files is enough, use
SMS to Text to save them, back up everything else on the phone that you need [see
Backing up an Android Device], then do a factory reset.)