[CRIU] [PATCH] zdtm/s390x_regs_check: Fix wait() for threads

Andrei Vagin avagin at virtuozzo.com
Sat Sep 30 03:54:41 MSK 2017


Applied, thanks!
On Wed, Sep 27, 2017 at 05:21:48PM +0200, Michael Holzheu wrote:
> For older kernels (e.g. RHEL7 with 3.10) it seems that wait(NULL) after
> ptrace(PTHREAD_ATTACH) does not work properly for threads that have
> to be created via clone().
> 
> Fix this by using waitpid() with the __WALL flag.
> 
> From the waitpid() man page:
> 
>  __WALL (since Linux 2.4)
>  Wait  for  all  children, regardless of type ("clone" or "non-clone").
> 
> Reported-by: Adrian Reber <areber at redhat.com>
> Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com>
> ---
>  test/zdtm/static/s390x_regs_check.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/test/zdtm/static/s390x_regs_check.c b/test/zdtm/static/s390x_regs_check.c
> index a92679ab0..4854b534a 100644
> --- a/test/zdtm/static/s390x_regs_check.c
> +++ b/test/zdtm/static/s390x_regs_check.c
> @@ -391,7 +391,10 @@ static void child_func(void)
>  static int ptrace_attach(pid_t pid)
>  {
>  	if (ptrace(PTRACE_ATTACH, pid, 0, 0) == 0) {
> -		wait(NULL);
> +		if (waitpid(pid, NULL, __WALL) < 0) {
> +			pr_perror("Waiting for thread %d failed", pid);
> +			return -1;
> +		}
>  		return 0;
>  	}
>  	pr_perror("Attach to thread %d failed", pid);
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list