Error handling by deadlock
When return codes of fallible functions are not ignored (see #181) they are often handled by immediately performing clean up (or not, see #184) and returning early. This is better than ignoring the errors, but has serious drawbacks in the parallel parts of SIONlib. It is not necessarily the case that all errors will always manifest globally (i.e. on all processes). This leads to some (but not all) processes returning early from functions that later try to perform collective operations leading to a deadlock. Considering that in the context of HPC, users are often billed for compute time by the wall clock, this is a particularly poor error handling strategy.
Better strategies would be to make error handling collective (if any process encounters an error, all return early) or abort the program (harsh, but probably saves a lot of wasted compute time).