Reviewed-by: Jan Friesse <jfrie...@redhat.com> Russell Bryant napsal(a): > This patch resolves a deadlock between the serialize lock (in > exec/main.c) and the timer lock (in exec/timer.c). I observed this > deadlock happening fairly quickly on a cluster using the EVT service > from OpenAIS. (OpenAIS 1.1.4, Corosync 1.4.1) > > In prioritized_timer_thread(), it was grabbing: > 1) timer lock > 2) serialize lock > > In another thread, you have: > 1) grab the serialize lock in deliver_fn() of exec/main.c > 2) grab the timer lock in corosync_timer_add_duration(). > > The patch just swaps the locking order in the timer thread. > > Signed-off-by: Russell Bryant <russ...@russellbryant.net> > --- > exec/timer.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/exec/timer.c b/exec/timer.c > index 69f9a95..02ca51b 100644 > --- a/exec/timer.c > +++ b/exec/timer.c > @@ -131,13 +131,13 @@ static void *prioritized_timer_thread (void *data) > if (fds < 0) { > return NULL; > } > - pthread_mutex_lock (&timer_mutex); > timer_serialize_lock_fn (); > + pthread_mutex_lock (&timer_mutex); > > timerlist_expire (&timers_timerlist); > > - timer_serialize_unlock_fn (); > pthread_mutex_unlock (&timer_mutex); > + timer_serialize_unlock_fn (); > } > } >
_______________________________________________ Openais mailing list Openais@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/openais