[CRIU] [PATCH] parasite: Don't handle CHLD from trapping threads

Pavel Emelyanov xemul at parallels.com
Tue Oct 14 06:22:38 PDT 2014


On 10/14/2014 05:21 PM, Andrew Vagin wrote:
> On Tue, Oct 14, 2014 at 05:14:26PM +0400, Pavel Emelyanov wrote:
>> The idea is appealing, but
>>
>>> @@ -1630,15 +1630,21 @@ static int dump_one_task(struct pstree_item *item)
>>>  		goto err_cure;
>>>  	}
>>>  
>>> -	ret = dump_task_threads(parasite_ctl, item);
>>> +	ret = dump_task_creds(parasite_ctl, cr_imgset, &cr);
>>>  	if (ret) {
>>> -		pr_err("Can't dump threads\n");
>>> -		goto err_cure;
>>> +		pr_err("Dump creds (pid: %d) failed with %d\n", pid, ret);
>>> +		goto err;
>>>  	}
>>>  
>>> -	ret = dump_task_creds(parasite_ctl, cr_imgset, &cr);
>>> +	ret = parasite_stop_daemon(parasite_ctl);
>>>  	if (ret) {
>>> -		pr_err("Dump creds (pid: %d) failed with %d\n", pid, ret);
>>> +		pr_err("Can't cure (pid: %d) from parasite\n", pid);
>>> +		goto err;
>>> +	}
>>> +
>>> +	ret = dump_task_threads(parasite_ctl, item);
>>> +	if (ret) {
>>> +		pr_err("Can't dump threads\n");
>>>  		goto err;
>>>  	}
>>>  
>>
>> This expands the window during which dead CRIU results in dead dumpee as
>> after parasite_stop_daemon() the latter is in unrecoverable state (the
>> regs are restored after parasite_munmap()).
> 
> No, this doesn't. If criu detaches from a process after
> parasite_stop_daemon(), the process will continue.

Why is it so?



More information about the CRIU mailing list