[CRIU] Re: [PATCH 2/6] parasite: Dump blocked thread signals mask

Cyrill Gorcunov gorcunov at openvz.org
Thu Nov 1 07:04:40 EDT 2012


On Thu, Nov 01, 2012 at 02:59:10PM +0400, Pavel Emelyanov wrote:
> On 10/31/2012 02:44 PM, Cyrill Gorcunov wrote:
> > ---
> >  include/parasite.h |    1 +
> >  parasite.c         |    8 ++++++--
> >  2 files changed, 7 insertions(+), 2 deletions(-)
> > 
> 
> > @@ -354,11 +354,15 @@ static int dump_thread_info(struct parasite_dump_thread_info *args)
> >  
> >  	ret = sys_prctl(PR_GET_TID_ADDRESS, (unsigned long) &args->tid_addr, 0, 0, 0);
> >  	if (ret)
> > -		return ret;
> > +		goto err;
> >  
> >  	args->tid = sys_gettid();
> >  
> > -	return 0;
> > +	ksigfillset(&args->blocked);
> > +	ret = sys_sigprocmask(SIG_SETMASK, NULL, &args->blocked, sizeof(k_rtsigset_t));
> > +
> > +err:
> > +	return ret;
> >  }
> >  
> >  static int drain_fds(struct parasite_drain_fd *args)
> 
> No, this is wrong. Threads' blocked signals should be handled the same way as
> tasks' are.

Not sure if I follow you here. At moment task's signals are obtained from
parasite code, where they are saved once the task get infected with our
blob. Now when we run parasite code inside thread space we fetch blocked
signals, so what i'm missing?


More information about the CRIU mailing list