Editing a node deletes body content reproducibly if Locale module enabled
Implement hook_form_submit() and either set a breakpoint there, output to the messages or log the form_state values to see what's actually being submitted. Implement hook_node_presave() and do the same to see what's actually going to be saved to the database.
There is a chance the client-side JS or some validation hook changes the value for the field, so you will have to either dig or debug through all your modules. It's hard to tell something specifically, because any module, either contrib or custom one, can put its own hook and empty the content for some reason.