diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2017-12-14 09:53:18 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2017-12-14 09:53:18 +0300 |
commit | 00389b780fb926f8249ea2df4522f8d6aeb06d57 (patch) | |
tree | 0cc8d2b4dfc128cdd0b26be7a3816ffcf287c881 /pthread_support.c | |
parent | d3ead52a842ada81889577a7aa68e98e3bb87e54 (diff) | |
download | bdwgc-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.c | 8 |
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) |