[Libreoffice-commits] core.git: sal/cppunittester

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Mon Aug 2 11:52:50 UTC 2021


 sal/cppunittester/cppunittester.cxx |   13 +++++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit 0e883d6dbee8d72257f77605ae0c8a1d5bfbf044
Author:     Noel Grandin <noel at peralex.com>
AuthorDate: Mon Aug 2 12:29:57 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Aug 2 13:52:15 2021 +0200

    display stack trace on assert for windows jenkins builds
    
    Change-Id: I1c23fda56c013eeeaf4ad1099c164d6d1146f68b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119851
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sal/cppunittester/cppunittester.cxx b/sal/cppunittester/cppunittester.cxx
index d2727f1cd98e..f5f34c802c83 100644
--- a/sal/cppunittester/cppunittester.cxx
+++ b/sal/cppunittester/cppunittester.cxx
@@ -25,6 +25,8 @@
 #endif
 #if defined(_WIN32) && defined(_DEBUG)
 #include "dbghelp.h"
+#include <sal/backtrace.hxx>
+#include <signal.h>
 #endif
 
 #ifdef UNX
@@ -576,8 +578,19 @@ LONG WINAPI ExpFilter(EXCEPTION_POINTERS* ex)
     return EXCEPTION_EXECUTE_HANDLER;
 }
 
+void AbortSignalHandler(int signal)
+{
+    if (signal == SIGABRT) {
+        std::unique_ptr<sal::BacktraceState> bs = sal::backtrace_get(50);
+        SAL_WARN("sal", "CAUGHT SIGABRT:\n" << sal::backtrace_to_string(bs.get()));
+    }
+}
+
 SAL_IMPLEMENT_MAIN()
 {
+    // catch the kind of signal that is thrown when an assert fails, and log a stacktrace
+    signal(SIGABRT, AbortSignalHandler);
+
     bool ok = false;
     // This magic kind of Windows-specific exception handling has to be in its own function
     // because it cannot be in a function that has objects with destructors.


More information about the Libreoffice-commits mailing list