From: Ivan Maidanski Date: Fri, 22 Aug 2014 10:54:53 +0000 (+0400) Subject: Fix assertion on mark_lock_holder for non-unique NUMERIC_THREAD_ID X-Git-Tag: gc7_4_4~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=71fd59f21936254e2a03f952dc0d2d67c1f7fa39;p=gc Fix assertion on mark_lock_holder for non-unique NUMERIC_THREAD_ID (Apply commit 8cdc862 from 'master' branch.) * pthread_support.c (GC_acquire_mark_lock): Avoid assertion that GC_mark_lock_holder != NUMERIC_THREAD_ID(pthread_self()) unless NUMERIC_THREAD_ID_UNIQUE. * win32_threads.c (GC_acquire_mark_lock): Likewise. * win32_threads.c (NUMERIC_THREAD_ID): Add comment. --- diff --git a/pthread_support.c b/pthread_support.c index b7f0ad52..c66b08f8 100644 --- a/pthread_support.c +++ b/pthread_support.c @@ -2030,7 +2030,9 @@ static void setup_mark_lock(void) GC_INNER void GC_acquire_mark_lock(void) { - GC_ASSERT(GC_mark_lock_holder != NUMERIC_THREAD_ID(pthread_self())); +# ifdef NUMERIC_THREAD_ID_UNIQUE + GC_ASSERT(GC_mark_lock_holder != NUMERIC_THREAD_ID(pthread_self())); +# endif GC_generic_lock(&mark_mutex); SET_MARK_LOCK_HOLDER; } diff --git a/win32_threads.c b/win32_threads.c index ff97f292..74e47d9e 100644 --- a/win32_threads.c +++ b/win32_threads.c @@ -1804,7 +1804,9 @@ GC_INNER void GC_get_next_stack(char *start, char *limit, GC_INNER void GC_acquire_mark_lock(void) { - GC_ASSERT(GC_mark_lock_holder != NUMERIC_THREAD_ID(pthread_self())); +# ifdef NUMERIC_THREAD_ID_UNIQUE + GC_ASSERT(GC_mark_lock_holder != NUMERIC_THREAD_ID(pthread_self())); +# endif if (pthread_mutex_lock(&mark_mutex) != 0) { ABORT("pthread_mutex_lock failed"); }