[CRIU] [PATCH 5/8] parasite: restore registers after each parasite command

Andrew Vagin avagin at parallels.com
Tue Jul 16 06:43:35 EDT 2013


On Tue, Jul 16, 2013 at 01:57:44PM +0400, Pavel Emelyanov wrote:
> On 07/16/2013 01:44 PM, Andrew Vagin wrote:
> > On Tue, Jul 16, 2013 at 01:45:56PM +0400, Pavel Emelyanov wrote:
> >> On 07/15/2013 11:19 PM, Andrew Vagin wrote:
> >>> On Mon, Jul 15, 2013 at 09:03:42PM +0400, Pavel Emelyanov wrote:
> >>>> On 07/11/2013 01:46 PM, Andrey Vagin wrote:
> >>>>> Currenly we can restore blocking signals with help ptrace,
> >>>>> so if registers are restored after command, a process state
> >>>>> will not be corrupted if criu crashes.
> >>>>
> >>>> If criu crashes the sigreturn rescue code will restore the regs. No?
> >>>
> >>> Yes, but two commands are required, that a parasite is able to restore
> >>> itself via sigreturn:
> >>> * allocate parasite_ctl
> >>> * parasite_init_daemon()
> >>>
> >>> crtools can crash between these two commands, so we need this and
> >>> previos patch. This logic is used for dumping threads too.
> >>
> >> crtools can crash between set_sigmask(blockall) and set_sigmask(prev_blocked),
> >> so why do we need this change? Only to reduce this risky window?
> > 
> > Yes
> 
> That's ... strange. I would understand if we had only single
> window at which crtools crash means app crash. But we have
> several sequential of them. Can we fix it?

I'm afraid we can't do that. We need minimum two command to daemonize
parasite. In this series I try to make all these windows as small as
posible.



More information about the CRIU mailing list