summaryrefslogtreecommitdiff
path: root/sal/osl/unx/signal.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/osl/unx/signal.cxx')
-rw-r--r--sal/osl/unx/signal.cxx18
1 files changed, 16 insertions, 2 deletions
diff --git a/sal/osl/unx/signal.cxx b/sal/osl/unx/signal.cxx
index 55c7765b5d8a..f4c9a9ce5171 100644
--- a/sal/osl/unx/signal.cxx
+++ b/sal/osl/unx/signal.cxx
@@ -177,6 +177,20 @@ bool is_soffice_Impl()
return (idx != -1);
}
+#if HAVE_FEATURE_BREAKPAD
+bool is_unset_signal(int signal)
+{
+#ifdef DBG_UTIL
+ return (!bSetSEGVHandler && signal == SIGSEGV) ||
+ (!bSetWINCHHandler && signal == SIGWINCH) ||
+ (!bSetILLHandler && signal == SIGILL);
+#else
+ (void) signal;
+ return false;
+#endif
+}
+#endif
+
}
bool onInitSignal()
@@ -446,9 +460,9 @@ void signalHandlerFunction(int signal, siginfo_t * info, void * context)
}
#if HAVE_FEATURE_BREAKPAD
- if (Info.Signal == osl_Signal_AccessViolation ||
+ if ((Info.Signal == osl_Signal_AccessViolation ||
Info.Signal == osl_Signal_IntegerDivideByZero ||
- Info.Signal == osl_Signal_FloatDivideByZero)
+ Info.Signal == osl_Signal_FloatDivideByZero) && !is_unset_signal(signal))
{
for (SignalAction & rSignal : Signals)
{