From: Olivier Houchard Date: Wed, 17 Apr 2019 20:53:41 +0000 (+0200) Subject: MEDIUM: tasks: Don't account a destroyed task as a runned task. X-Git-Tag: v2.0-dev3~232 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1cfac37b654f569b629f5380dafb7b5a129789cf;p=thirdparty%2Fhaproxy.git MEDIUM: tasks: Don't account a destroyed task as a runned task. In process_runnable_tasks(), if the task we're about to run has been destroyed, and should be free, don't account for it in the number of task we ran. We're only allowed a maximum number of tasks to run per call to process_runnable_tasks(), and freeing one shouldn't take the slot of a valid task. --- diff --git a/src/task.c b/src/task.c index f38807c7a1..b4f65e892a 100644 --- a/src/task.c +++ b/src/task.c @@ -388,7 +388,12 @@ void process_runnable_tasks() t = process(TASK_IS_TASKLET(t) ? NULL : t, ctx, state); else { __task_free(t); - t = NULL; + curr_task = NULL; + /* We don't want max_processed to be decremented if + * we're just freeing a destroyed task, we should only + * do so if we really ran a task. + */ + continue; } curr_task = NULL; /* If there is a pending state we have to wake up the task