diff --git a/pyocd/gdbserver/context_facade.py b/pyocd/gdbserver/context_facade.py
index <HASH>..<HASH> 100644
--- a/pyocd/gdbserver/context_facade.py
+++ b/pyocd/gdbserver/context_facade.py
@@ -117,12 +117,16 @@ class GDBDebugContextFacade(object):
         if self._context.core.is_debug_trap():
             return signals.SIGTRAP
 
-        fault = self._context.read_core_register('ipsr')
-        try:
-            signal = FAULT[fault]
-        except:
-            # If not a fault then default to SIGSTOP
-            signal = signals.SIGSTOP
+        # If not a fault then default to SIGSTOP
+        signal = signals.SIGSTOP
+
+        if self._context.core.is_vector_catch():
+            fault = self._context.core.read_core_register('ipsr')
+            try:
+                signal = FAULT[fault]
+            except IndexError:
+                pass
+
         logging.debug("GDB lastSignal: %d", signal)
         return signal
GDB: Only do SIGSEGV etc on vector catch

Previous code indicated every stop while IPSR was non-zero as being
SIGSEGV, or whatever IPSR indicated.

Really, we only want the actual vector catches to indicate SIGSEGV.