From 192250cc7c1176b8ef7a4dfde596973fd4a1da57 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Mon, 24 Jul 2023 23:24:12 +0100 Subject: [PATCH] last test --- .github/workflows/cmake.yml | 2 +- Engine/source/CMakeLists.txt | 6 ++++- .../platformPOSIX/POSIXProcessControl.cpp | 27 ++++++++++--------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 19f4c35ed..8946c8180 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -19,7 +19,7 @@ jobs: runs-on: ${{matrix.os}} strategy: matrix: - os: [ ubuntu-latest, macos-latest ] + os: [ ubuntu-latest, macos-latest, windows-latest ] steps: - uses: actions/checkout@v3 diff --git a/Engine/source/CMakeLists.txt b/Engine/source/CMakeLists.txt index 80b420981..fa58a25fd 100644 --- a/Engine/source/CMakeLists.txt +++ b/Engine/source/CMakeLists.txt @@ -13,6 +13,10 @@ forwardDef(TORQUE_BASIC_LIGHTING) set(TORQUE_SDL ON) # we need sdl to do our platform interop forwardDef(TORQUE_SDL) +if(TORQUE_TESTING) +forwardDef(TORQUE_TESTS_ENABLED) +endif() + # On Windows we disable CRT Security warnings - this comes from recommendations to use non-portable functions. if (WIN32) set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} _CRT_SECURE_NO_WARNINGS WIN32) @@ -212,7 +216,7 @@ endif (UNIX AND NOT APPLE) if(TORQUE_TESTING) torqueAddSourceDirectories("testing") - set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED TORQUE_TESTS_ENABLED) + set(TORQUE_COMPILE_DEFINITIONS ${TORQUE_COMPILE_DEFINITIONS} TORQUE_SHARED SDL_MAIN_HANDLED) endif(TORQUE_TESTING) # Add the collected files to our engine group diff --git a/Engine/source/platformPOSIX/POSIXProcessControl.cpp b/Engine/source/platformPOSIX/POSIXProcessControl.cpp index 9166ba2cd..8836c5f5c 100644 --- a/Engine/source/platformPOSIX/POSIXProcessControl.cpp +++ b/Engine/source/platformPOSIX/POSIXProcessControl.cpp @@ -33,7 +33,6 @@ #include #include #include -#include #include "console/engineAPI.h" #include "core/util/journal/process.h" #ifndef TORQUE_DEDICATED @@ -60,17 +59,21 @@ static void CheckExitCode(S64 exitCode) //----------------------------------------------------------------------------- static void SignalHandler(int sigtype) { - void* array[10]; - size_t size; - - signal(sigtype, SIG_DFL); - - size = backtrace(array, 10); - - dPrintf("Error: signal: % d\n", sigtype); - backtrace_symbols_fd(array, size, STDERR_FILENO); - // exit to be safe - ImmediateShutdown(1); + if (sigtype == SIGSEGV || sigtype == SIGTRAP) + { + signal(SIGSEGV, SIG_DFL); + signal(SIGTRAP, SIG_DFL); + // restore the signal handling to default so that we don't get into + // a crash loop with ImmediateShutdown + ImmediateShutdown(-sigtype, sigtype); + } + else + { + signal(sigtype, SIG_DFL); + dPrintf("Unknown signal caught by SignalHandler: %d\n", sigtype); + // exit to be safe + ImmediateShutdown(1); + } } //-----------------------------------------------------------------------------