mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 22:05:36 +00:00
zdtm/s390x_regs_check: Fix wait() for threads
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@redhat.com> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
committed by
Andrei Vagin
parent
7454615722
commit
1a79b4d686
@@ -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);
|
||||
|
Reference in New Issue
Block a user