summaryrefslogtreecommitdiff
path: root/src/pal/src/exception/signal.cpp
diff options
context:
space:
mode:
authorAditya Mandaleeka <adityam@microsoft.com>2016-05-17 17:06:28 -0700
committerAditya Mandaleeka <adityam@microsoft.com>2016-05-17 17:06:28 -0700
commitc9eb779c20731a1d560ca76f48a6cd327b02dd03 (patch)
tree5757c66813987ac6846354a472afea0f1c5e3f9a /src/pal/src/exception/signal.cpp
parent182bea3c657856c90e9c5c0bab32bdc63c35352e (diff)
downloadcoreclr-c9eb779c20731a1d560ca76f48a6cd327b02dd03.tar.gz
coreclr-c9eb779c20731a1d560ca76f48a6cd327b02dd03.tar.bz2
coreclr-c9eb779c20731a1d560ca76f48a6cd327b02dd03.zip
Put SIGTERM registration behind a PAL initialization flag.
Diffstat (limited to 'src/pal/src/exception/signal.cpp')
-rw-r--r--src/pal/src/exception/signal.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/pal/src/exception/signal.cpp b/src/pal/src/exception/signal.cpp
index b0c0b000f4..dc26ee4bac 100644
--- a/src/pal/src/exception/signal.cpp
+++ b/src/pal/src/exception/signal.cpp
@@ -94,6 +94,8 @@ struct sigaction g_previous_sigint;
struct sigaction g_previous_sigquit;
struct sigaction g_previous_sigterm;
+static bool registered_sigterm_handler = false;
+
#ifdef INJECT_ACTIVATION_SIGNAL
struct sigaction g_previous_activation;
#endif
@@ -112,7 +114,7 @@ Parameters :
Return :
TRUE in case of a success, FALSE otherwise
--*/
-BOOL SEHInitializeSignals()
+BOOL SEHInitializeSignals(DWORD flags)
{
TRACE("Initializing signal handlers\n");
@@ -136,7 +138,12 @@ BOOL SEHInitializeSignals()
handle_signal(SIGSEGV, sigsegv_handler, &g_previous_sigsegv);
handle_signal(SIGINT, sigint_handler, &g_previous_sigint);
handle_signal(SIGQUIT, sigquit_handler, &g_previous_sigquit);
- handle_signal(SIGTERM, sigterm_handler, &g_previous_sigterm);
+
+ if (flags & PAL_INITIALIZE_REGISTER_SIGTERM_HANDLER)
+ {
+ handle_signal(SIGTERM, sigterm_handler, &g_previous_sigterm);
+ registered_sigterm_handler = true;
+ }
#ifdef INJECT_ACTIVATION_SIGNAL
handle_signal(INJECT_ACTIVATION_SIGNAL, inject_activation_handler, &g_previous_activation);
@@ -182,7 +189,11 @@ void SEHCleanupSignals()
restore_signal(SIGSEGV, &g_previous_sigsegv);
restore_signal(SIGINT, &g_previous_sigint);
restore_signal(SIGQUIT, &g_previous_sigquit);
- restore_signal(SIGTERM, &g_previous_sigterm);
+
+ if (registered_sigterm_handler)
+ {
+ restore_signal(SIGTERM, &g_previous_sigterm);
+ }
#ifdef INJECT_ACTIVATION_SIGNAL
restore_signal(INJECT_ACTIVATION_SIGNAL, &g_previous_activation);