[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