Given that that is a filter, it should be return
ing $metadata
instead of returning nothing.
add_filter( 'wp_generate_attachment_metadata', 'mvt_save_photo_credit', 10, 2 );
function mvt_save_photo_credit( $metadata, $attachment_id ) {
add_post_meta($attachment_id, '_mvt_credit', $metadata['image_meta']['credit'], true);
return $metadata; // <-- giving back what we got
}
I was able to duplicate the issue you describe, and that small change fixed it.
This only matter for filters down line of this one, but with filters you should (nearly) always return information. You never know what will break if you don’t.