From a38ec2854a770ff8fb9688e89055e0c6e0b2e558 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 29 Nov 2017 14:43:56 +0100 Subject: [PATCH] base: fix lock issue in signal context destruction Issue #2584 --- repos/base/src/lib/base/signal_common.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/repos/base/src/lib/base/signal_common.cc b/repos/base/src/lib/base/signal_common.cc index a3baae1c2b..3e73427bf7 100644 --- a/repos/base/src/lib/base/signal_common.cc +++ b/repos/base/src/lib/base/signal_common.cc @@ -230,9 +230,13 @@ void Signal_receiver::dissolve(Signal_context *context) if (context->_receiver != this) throw Context_not_associated(); - Lock::Guard contexts_lock_guard(_contexts_lock); + { + Lock::Guard contexts_lock_guard(_contexts_lock); - _unsynchronized_dissolve(context); + Lock::Guard context_lock_guard(context->_lock); + + _unsynchronized_dissolve(context); + } Lock::Guard context_destroy_lock_guard(context->_destroy_lock); }