diff --git a/RTCP/IONProc/src/ION_main.cc b/RTCP/IONProc/src/ION_main.cc
index 98f384d78b35f5c7cd984519195c60a73e8dce66..b860b3bc4ada2e67ff1e8d7781e32be16897124d 100644
--- a/RTCP/IONProc/src/ION_main.cc
+++ b/RTCP/IONProc/src/ION_main.cc
@@ -219,10 +219,29 @@ static void enableCoreDumps()
 }
 
 
-static void ignoreSigPipe()
+static void abortHandler(int sig)
 {
+  (void)sig;
+
+  abort();
+}
+
+
+static void installSigHandlers()
+{
+  // ignore SIGPIPE
   if (signal(SIGPIPE, SIG_IGN) < 0)
     perror("warning: ignoring SIGPIPE failed");
+
+  // force abort() on a few signals, as OpenMPI appears to be broken in this regard
+  if (signal(SIGBUS, abortHandler) < 0)
+    perror("warning: rerouting SIGBUS failed");
+  if (signal(SIGSEGV, abortHandler) < 0)
+    perror("warning: rerouting SIGSEGV failed");
+  if (signal(SIGILL, abortHandler) < 0)
+    perror("warning: rerouting SIGILL failed");
+  if (signal(SIGFPE, abortHandler) < 0)
+    perror("warning: rerouting SIGFPE failed");
 }
 
 
@@ -272,7 +291,7 @@ static void master_thread()
   LOG_DEBUG("Master thread running");
 
   enableCoreDumps();
-  ignoreSigPipe();
+  installSigHandlers();
 
 #if defined CATCH_EXCEPTIONS
   try {