From cdc938fcec455d1799061bdcc0a53b9d30128eea Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Thu, 19 Apr 2012 11:00:32 +0000 Subject: [PATCH] scheduler, ticket lock: Add memory barriers necessary to avoid a deadlock on PowerPC systems git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12509 --- coregrind/m_scheduler/ticket-lock-linux.c | 2 ++ 1 file changed, 2 insertions(+) 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)(); -- 2.47.2