Commit 99801e72 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

proc: parse /proc/pid/status when a task is stopped (v2)

If we parse /proc/pid/status when a task isn't stopped,
we can't be sure that a process state will not be changed.

08:58:48 Test: zdtm/live/user/static/zombie00, Namespace: 1
08:58:48 Dump log   : /var/lib/jenkins/jobs/CRIU-dump/workspace/test/dump/ns/user/static/zombie00/114/1/dump.log
08:58:48 --------------------------------- grep Error ---------------------------------
08:58:48 (00.001127) Error (ptrace.c:124): SEIZE 121: task not stopped after seize

v2: don't believe into errno (by xemul@)

Reported-by: Mr Jenkins
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 9be77690
......@@ -80,6 +80,9 @@ int seize_task(pid_t pid, pid_t ppid)
* we might nead at that early point.
*/
try_again:
ret = wait4(pid, &status, __WALL, NULL);
ret2 = parse_pid_status(pid, &cr);
if (ret2)
goto err;
......@@ -108,18 +111,6 @@ int seize_task(pid_t pid, pid_t ppid)
goto err;
}
try_again:
ret = wait4(pid, &status, __WALL, NULL);
if (ret < 0) {
pr_perror("SEIZE %d: can't wait task", pid);
goto err;
}
if (ret != pid) {
pr_err("SEIZE %d: wrong task attached (%d)\n", pid, ret);
goto err;
}
if (!WIFSTOPPED(status)) {
pr_err("SEIZE %d: task not stopped after seize\n", pid);
goto err;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment