[C/R][PATCH] Use __WALL option in waitpid()

Oren Laadan orenl at cs.columbia.edu
Wed Jul 1 22:55:53 PDT 2009


Got it, thanks.

Oren.

Sukadev Bhattiprolu wrote:
> Oren,
> 
> (Following up on the discussion from IRC)
> 
> I had run my application as:
> 
> 	ns_exec -cpuimP pid.ptree1 -- ./ptree1 -n 2 -d 1 -w sleep
> 
> ns_exec creates the application in new container, with p->exit_signal 0.
> for the container-init. When we checkpoint the process tree, we
> correctly save and restore the exit_signal to 0. Because of that,
> we need the coordinator to use __WALL.
> 
> Sukadev
> 
> Sukadev Bhattiprolu [sukadev at linux.vnet.ibm.com] wrote:
> | 
> | The coordinator creates the children with clone(), so pass the __WALL
> | option to waitpid(). Otherwise the waitpid() will fail, and bring the
> | container down even as the application is restarting successfully :-)
> | 
> | Signed-off-by: Sukadev Bhattiprolu <sukadev at us.ibm.com>
> | 
> | ---
> |  mktree.c |    2 +-
> |  1 file changed, 1 insertion(+), 1 deletion(-)
> | 
> | Index: user-cr/mktree.c
> | ===================================================================
> | --- user-cr.orig/mktree.c	2009-06-27 12:16:42.000000000 -0700
> | +++ user-cr/mktree.c	2009-06-27 12:17:02.000000000 -0700
> | @@ -523,7 +523,7 @@ static int ckpt_collect_child(pid_t pid,
> |  {
> |  	int status;
> | 
> | -	pid = waitpid(pid, &status, 0);
> | +	pid = waitpid(pid, &status, __WALL);
> |  	if (pid < 0) {
> |  		perror("WEIRD: collect child task");
> |  		exit(1);
> | _______________________________________________
> | Containers mailing list
> | Containers at lists.linux-foundation.org
> | https://lists.linux-foundation.org/mailman/listinfo/containers
> 


More information about the Containers mailing list