diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-04-02 22:57:01 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-04-03 11:08:53 +0300 |
commit | 851cf18b802ba8286bd48cb5c288075a75eba4bd (patch) | |
tree | 7eeb6c41c01e0aa2717796af4fc9b70e083b70d5 /pthread_stop_world.c | |
parent | e2c93160805c2c434ee0bd79ce403674ba3f3dcd (diff) | |
download | bdwgc-851cf18b802ba8286bd48cb5c288075a75eba4bd.tar.gz |
Initialize GC_retry_signals to true in GC_stop_init
(refactoring)
* pthread_stop_world.c (GC_retry_signals): Always initialize to FALSE;
move comment to GC_stop_init.
* pthread_stop_world.c [!GC_OPENBSD_UTHREADS && !NACL
&& !NO_RETRY_SIGNALS] (GC_stop_init): Set GC_retry_signals to TRUE.
Diffstat (limited to 'pthread_stop_world.c')
-rw-r--r-- | pthread_stop_world.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/pthread_stop_world.c b/pthread_stop_world.c index 7ce626b4..ae5bc77b 100644 --- a/pthread_stop_world.c +++ b/pthread_stop_world.c @@ -142,13 +142,7 @@ STATIC volatile AO_t GC_stop_count; /* before they are expected to stop (unless */ /* they have stopped voluntarily). */ -#ifndef NO_RETRY_SIGNALS - /* Any platform could lose signals, so let's be conservative and */ - /* always enable signals retry logic. */ - STATIC GC_bool GC_retry_signals = TRUE; -#else - STATIC GC_bool GC_retry_signals = FALSE; -#endif +STATIC GC_bool GC_retry_signals = FALSE; /* * We use signals to stop threads during GC. @@ -1404,6 +1398,11 @@ GC_INNER void GC_stop_init(void) if (sigdelset(&suspend_handler_mask, GC_sig_thr_restart) != 0) ABORT("sigdelset failed"); +# ifndef NO_RETRY_SIGNALS + /* Any platform could lose signals, so let's be conservative and */ + /* always enable signals retry logic. */ + GC_retry_signals = TRUE; +# endif /* Override the default value of GC_retry_signals. */ str = GETENV("GC_RETRY_SIGNALS"); if (str != NULL) { @@ -1418,6 +1417,7 @@ GC_INNER void GC_stop_init(void) GC_COND_LOG_PRINTF( "Will retry suspend and restart signals if necessary\n"); } + # ifndef NO_SIGNALS_UNBLOCK_IN_MAIN /* Explicitly unblock the signals once before new threads creation. */ GC_unblock_gc_signals(); |