A segmentation fault seems to sometimes occur in the final output stage. When running in MPI mode, this kills ALL processes. Instead, intercept and handle the SIGSEGV by printing an error to stderr and
the the log, then killing the offending process gracefully. I think this still prevents other files that would have been handled by the same MPI process from being handled, but I'm not sure how to avoid this, yet.
The handling can be tested by adding a raise(SIGSEGV) somewhere in the code (probably for just one process rank!), note #include is needed.
A segmentation fault seems to sometimes occur in the final output stage. When running in MPI mode, this kills ALL processes. Instead, intercept and handle the SIGSEGV by printing an error to stderr and the the log, then killing the offending process gracefully. I think this still prevents other files that would have been handled by the same MPI process from being handled, but I'm not sure how to avoid this, yet.
The handling can be tested by adding a raise(SIGSEGV) somewhere in the code (probably for just one process rank!), note #include is needed.