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
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();