summaryrefslogtreecommitdiff
path: root/pthread_support.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2017-12-14 09:53:18 +0300
committerIvan Maidanski <ivmai@mail.ru>2017-12-14 09:53:18 +0300
commit00389b780fb926f8249ea2df4522f8d6aeb06d57 (patch)
tree0cc8d2b4dfc128cdd0b26be7a3816ffcf287c881 /pthread_support.c
parentd3ead52a842ada81889577a7aa68e98e3bb87e54 (diff)
downloadbdwgc-00389b780fb926f8249ea2df4522f8d6aeb06d57.tar.gz
Do not add no_sanitize_thread to fork at-handlers if no pthread_atfork
(fix commit 3a52469) * pthread_support.c [THREAD_SANITIZER] (GC_wait_for_gc_completion): Do not skip I_HOLD_LOCK() assertion unless CAN_CALL_ATFORK. * pthread_support.c [CAN_HANDLE_FORK && GC_ASSERTIONS] (fork_prepare_proc, fork_parent_proc, fork_child_proc): Do not add GC_ATTR_NO_SANITIZE_THREAD attribute unless CAN_CALL_ATFORK.
Diffstat (limited to 'pthread_support.c')
-rw-r--r--pthread_support.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/pthread_support.c b/pthread_support.c
index c5a27f06..9dc7ba56 100644
--- a/pthread_support.c
+++ b/pthread_support.c
@@ -1003,7 +1003,7 @@ STATIC void GC_remove_all_threads_but_me(void)
STATIC void GC_wait_for_gc_completion(GC_bool wait_for_all)
{
DCL_LOCK_STATE;
-# if !defined(THREAD_SANITIZER) || !defined(CAN_HANDLE_FORK)
+# if !defined(THREAD_SANITIZER) || !defined(CAN_CALL_ATFORK)
/* GC_lock_holder is accessed with the lock held, so there is no */
/* data race actually (unlike what is reported by TSan). */
GC_ASSERT(I_HOLD_LOCK());
@@ -1041,7 +1041,7 @@ IF_CANCEL(static int fork_cancel_state;)
/* protected by allocation lock. */
/* Called before a fork() */
-#ifdef GC_ASSERTIONS
+#if defined(GC_ASSERTIONS) && defined(CAN_CALL_ATFORK)
/* GC_lock_holder is updated safely (no data race actually). */
GC_ATTR_NO_SANITIZE_THREAD
#endif
@@ -1069,7 +1069,7 @@ static void fork_prepare_proc(void)
}
/* Called in parent after a fork() (even if the latter failed). */
-#ifdef GC_ASSERTIONS
+#if defined(GC_ASSERTIONS) && defined(CAN_CALL_ATFORK)
GC_ATTR_NO_SANITIZE_THREAD
#endif
static void fork_parent_proc(void)
@@ -1083,7 +1083,7 @@ static void fork_parent_proc(void)
}
/* Called in child after a fork() */
-#ifdef GC_ASSERTIONS
+#if defined(GC_ASSERTIONS) && defined(CAN_CALL_ATFORK)
GC_ATTR_NO_SANITIZE_THREAD
#endif
static void fork_child_proc(void)