[lxc-devel] [PATCH 1/5] start child in its own process group, and put it into the foreground

Matt Helsley matthltc at us.ibm.com
Wed Jun 9 19:21:33 UTC 2010


On Wed, Jun 09, 2010 at 07:56:03PM +0200, Ferenc Wagner wrote:
> Signed-off-by: Ferenc Wagner <wferi at 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 <matthltc at us.ibm.com>

Cheers,
	-Matt Helsley




More information about the lxc-devel mailing list