Matt Helsley <matth...@us.ibm.com> writes:

> On Wed, Jun 09, 2010 at 07:56:03PM +0200, Ferenc Wagner wrote:
>
>> Signed-off-by: Ferenc Wagner <wf...@niif.hu>
>> ---
>>  src/lxc/start.c |   17 +++++++++++++++++
>>  1 files changed, 17 insertions(+), 0 deletions(-)
>> 
>> diff --git a/src/lxc/start.c b/src/lxc/start.c
>> index b69ac88..7bbcf5a 100644
>> --- a/src/lxc/start.c
>> +++ b/src/lxc/start.c
>> @@ -463,6 +463,7 @@ int lxc_spawn(struct lxc_handler *handler)
>>      int clone_flags;
>>      int failed_before_rename = 0;
>>      const char *name = handler->name;
>> +    int ctty;
>> 
>>      if (lxc_sync_init(handler))
>>              return -1;
>> @@ -509,6 +510,22 @@ int lxc_spawn(struct lxc_handler *handler)
>>              }
>>      }
>> 
>> +    if (setpgid(handler->pid, 0)) {
>
> I think this races with the exec in the child. From the setpgid() man page:
>
> ERRORS
>        EACCES An attempt was made to change the process group ID of one of the
>               children  of  the calling process and the child had already per‐
>               formed an execve(2) (setpgid(), setpgrp()).
>
> You may be able to fix this by also doing setpgid() in the child before the
> exec.
>
> Acked-by: Matt Helsley <matth...@us.ibm.com>

Thanks for the review.  Isn't the race excluded by
lxc_sync_barrier_child(handler, LXC_SYNC_POST_CONFIGURE) being on the
following lines, not before?  Then I was misled by the comment before
it.
-- 
Cheers,
Feri.

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to