]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUG/MAJOR: sched: make sure task_kill() always queues the task
authorWilly Tarreau <w@1wt.eu>
Thu, 2 Jul 2020 12:14:00 +0000 (14:14 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 2 Jul 2020 12:14:00 +0000 (14:14 +0200)
commit54d31170a9a8bf126cb7d1783bbdb806f742cc0d
treec0ff73d9b1337f69c0f8376e76c740a7f1fd28e3
parentdab586c3a822239c0af2f216f3aea4ef463f4c9e
BUG/MAJOR: sched: make sure task_kill() always queues the task

task_kill() may fail to queue a task if this task has never ever run,
because its equivalent (tasklet->list) member has never been "emptied"
since it didn't pass through the LIST_DEL_INIT() that's performed by
run_tasks_from_lists(). This results in these tasks to never be freed.

It happens during the mux takeover since the target task usually is
the timeout task which, by definition, has never run yet.

This fixes commit eb8c2c69f ("MEDIUM: sched: implement task_kill() to
kill a task") which was introduced after 2.2-dev11 and doesn't need to
be backported.
src/task.c