[Monetdb-developers] locate_file and error handling
Hi,
As I read the source, I see lots of instances where return values are not checked or not handled; for example, strdup().
Most recently, this programming idiom triggered a null pointer dereference, which caused mserver to segfault (see tracker #2971516 [1]).
In my experience, when the logic encounters a condition it can't recover from, exiting quickly with as much information as possible is very useful.
Whe I read locate_file() method and see:
char *mod_path = GDKgetenv("monet_mod_path"); if (mod_path == NULL) return NULL;
I wonder---how can you recover from this? I want to submit a patch that says:
if (mod_path == NULL) errx(1, "locate_file: GDBgetenv("monet_mod_path") is null");
But I'm not sure you guys will accept this. Would you? It's a large change to error handling style.
What happens to me in #2971516 is simply the library file name is not found. But instead of a useful error message that tells me what directories where searched and what the file name is, I get
ERR control[14875]: (local): failed to fork mserver: database 'test' has inconsistent state (running but dead), review merovingian's logfile for any peculiarities
and an mserver5.core file.
Thanks,
m
[1] https://sourceforge.net/tracker/index.php?func=detail&aid=2971516&gr...
participants (1)
-
Mark Bucciarelli