From: Bart Van Assche Date: Thu, 19 Apr 2012 11:00:32 +0000 (+0000) Subject: scheduler, ticket lock: Add memory barriers necessary to avoid a deadlock on PowerPC... X-Git-Tag: svn/VALGRIND_3_8_0~353 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdc938fcec455d1799061bdcc0a53b9d30128eea;p=thirdparty%2Fvalgrind.git scheduler, ticket lock: Add memory barriers necessary to avoid a deadlock on PowerPC systems git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12509 --- diff --git a/coregrind/m_scheduler/ticket-lock-linux.c b/coregrind/m_scheduler/ticket-lock-linux.c index 865c79ec3e..e28841cc88 100644 --- a/coregrind/m_scheduler/ticket-lock-linux.c +++ b/coregrind/m_scheduler/ticket-lock-linux.c @@ -127,6 +127,7 @@ static void acquire_sched_lock(struct sched_lock *p) VG_(gettid)(), ticket); for (;;) { futex_value = *futex; + __sync_synchronize(); if (ticket == p->head) break; if (s_debug) @@ -142,6 +143,7 @@ static void acquire_sched_lock(struct sched_lock *p) vg_assert(False); } } + __sync_synchronize(); INNER_REQUEST(ANNOTATE_RWLOCK_ACQUIRED(p, /*is_w*/1)); vg_assert(p->owner == 0); p->owner = VG_(gettid)();