There are different critical conditions the server should handle. Here is a small list of different things, and how they could be managed:
disk read failure: should LOG() and warn online DMs. Also don't let player enter map, totally erase map from memory to keep file as-in on disk - or write it somewhere to keep what was recovered?
disk write failure: if disk full, should LOG(), try to clean temporary maps. Then should warn online DMs, and reject new connections/warn connecting players of the issue
memory allocation failure: for now, server will either LOG() and abort() or not check and happily crash. Suggestion: create a Crossfire specific allocation routine that could try to free some memory and try again before failing for good
plugin asked for an invalid property/object/whatever. Should LOG() and just return with an error code to plugin. Plugin could just ignore, though.