Fix: action executor: double work list unlock on error
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 21 Aug 2020 18:16:10 +0000 (14:16 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 21 Aug 2020 18:16:10 +0000 (14:16 -0400)
The action executor executes its queued work items without holding the
work list lock. This can result in a double-unlock when a fatal error
occurs during the processing of a work item.

A check for the "should_quit" flag is added before unlocking since this
is the only other reason for the thread to exit its loop.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: I8d6b1a3511174abd08848ac3677cdf8a326fa8c5

src/bin/lttng-sessiond/action-executor.c

index e3b387d62d35c33e76c95f2b3745bdfde1e74156..2e6e27a8ce3febcfd0db7cbb100369ff7d974ca4 100644 (file)
@@ -563,7 +563,9 @@ static void *action_executor_thread(void *_data)
                pthread_mutex_lock(&executor->work.lock);
        }
 
-       pthread_mutex_unlock(&executor->work.lock);
+       if (executor->should_quit) {
+               pthread_mutex_unlock(&executor->work.lock);
+       }
        DBG("Left work execution loop");
 
        health_code_update();
This page took 0.026151 seconds and 4 git commands to generate.