Commit c1cd6b5e authored by Christopher Covington's avatar Christopher Covington Committed by Pavel Emelyanov

Allow dumps of stopped multithreaded processes

CRIU can handle stopped multithreaded processes when all threads
are stopped. Refine the check to allow this case.
Signed-off-by: 's avatarChristopher Covington <cov@codeaurora.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 2713b6a3
......@@ -833,7 +833,7 @@ static pid_t item_ppid(const struct pstree_item *item)
static int seize_threads(struct pstree_item *item,
struct pid *threads, int nr_threads)
{
int i = 0, ret, j, nr_inprogress;
int i = 0, ret, j, nr_inprogress, nr_stopped = 0;
if ((item->state == TASK_DEAD) && (nr_threads > 1)) {
pr_err("Zombies with threads are not supported\n");
......@@ -889,11 +889,15 @@ static int seize_threads(struct pstree_item *item,
}
if (ret == TASK_STOPPED) {
pr_err("Stopped threads not supported\n");
goto err;
nr_stopped++;
}
}
if (nr_stopped && nr_stopped != nr_inprogress) {
pr_err("Individually stopped threads not supported\n");
goto err;
}
return nr_inprogress;
err:
return -1;
......
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