I wonder if the problem is that Linux isn't writing to the SD card directly, instead it is buffering it up and writing at a more optimal point (optimal from performance/SD life/battery life) when there is possibly more data waiting to be written. So ultimately the data being written to the SD isn't in a consistent state until it has all been flushed to the card (until it is consistent, it could be thought of as being corrupt). Typically the flush happens from time to time, data is kept in sync, everything runs well, but in the case of a crash, the data not yet written to the SD doesn't ever get written, so the contents on the SD is left in the intermediate/corrupt state.
Does that sound like what is going on? I don't really know how filesystems/linux/SD/electable media works, just speculating.
If the above is all true, I guess either Linux can be told not to buffer up data, or, perhaps it is possible to forcibly get the data to flush, in which case I wonder if there is any sense in the emulator asking for a flush after a save has been made (typically putting code like this at the application level seems wrong, but if the application in question can crash by its nature maybe it safe guarding the data it writes isn't so bad).