diff options
author | Aditya Mandaleeka <adityam@microsoft.com> | 2016-05-17 17:06:28 -0700 |
---|---|---|
committer | Aditya Mandaleeka <adityam@microsoft.com> | 2016-05-17 17:06:28 -0700 |
commit | c9eb779c20731a1d560ca76f48a6cd327b02dd03 (patch) | |
tree | 5757c66813987ac6846354a472afea0f1c5e3f9a /src/pal/src/exception/signal.cpp | |
parent | 182bea3c657856c90e9c5c0bab32bdc63c35352e (diff) | |
download | coreclr-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.cpp | 17 |
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); |