[CRIU] [PATCH] dump/files: remove a leftover from dead_pid_conflict
Andrew Vagin
avagin at virtuozzo.com
Fri Aug 17 02:34:08 MSK 2018
Applied, thanks
On Thu, Jul 19, 2018 at 11:28:00AM +0300, Pavel Tikhomirov wrote:
> In commit 23b769498cb3 ("dump: optimize dead_pid_conflict by searching
> in rbtree") we'd replaced for_each_pstree_item and thread walk search
> with pstree_pid_by_virt (rb-tree search). The latter already found us
> the thread with conflicting pid if it exists, the only thing left is to
> skip if the thread is also a main thread of the thread group (as it was
> before patch). But some leftover left which checks something wrong: we
> index ->threads array with "i", but "i" is not a number of the thread
> it is a number of current dead pid.
>
> Not sure if it helps with the initial bug and duplicates, but it might:
> https://jira.sw.ru/browse/PSBM-55217
>
> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
> ---
> criu/files-reg.c | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/criu/files-reg.c b/criu/files-reg.c
> index 112acc159..b3fc41357 100644
> --- a/criu/files-reg.c
> +++ b/criu/files-reg.c
> @@ -1006,18 +1006,9 @@ int dead_pid_conflict(void)
> if (!node)
> continue;
>
> - if (node->state != TASK_THREAD) {
> - struct pstree_item *item;
> -
> - /*
> - * If the dead PID was given to a main thread of another
> - * process, this is handled during restore.
> - */
> - item = node->item;
> - if (item->pid->real == item->threads[i].real ||
> - item->threads[i].ns[0].virt != pid)
> - continue;
> - }
> + /* Main thread */
> + if (node->state != TASK_THREAD)
> + continue;
>
> pr_err("Conflict with a dead task with the same PID as of this thread (virt %d, real %d).\n",
> node->ns[0].virt, node->real);
> --
> 2.17.0
>
More information about the CRIU
mailing list