Every time a contact record is edited and then saved, the display name and sort name revert to "contact.first_name [Last name]". When you are in edit mode, the First name is still there (and other associated fields, such as email greeting all still display the contact's first name).
I've updated CiviCRM to 4.7.18 - tis hasn't fixed anything. (This site has lots of events and I saw a couple of people reporting issues with events on the latest version so avoided 4.7.19).
I can save it using the phpMyAdmin UI but that's only temporary, until a user edits the same contact record again.