Oren, In usercr commit 0dd3f9dacc0a08f5fb562e385a4e4244f453b41c we have the following diff: @@ -1868,10 +1902,16 @@ static int ckpt_fork_feeder(struct ckpt_ctx *ctx) close(ctx->pipe_child[0]); ctx->pipe_out = ctx->pipe_child[1]; + ctx->pipe_child[0] = -1; /* mark unused */ + ctx->pipe_child[1] = -1; /* mark unused */ --- ckpt_fork_feeder() creates the ->pipe_child[] pipe and clones the fork_feeder. ckpt_do_feeder() does the following: /* children pipe */ close(ctx->pipe_child[1]); ctx->pipe_in = ctx->pipe_child[0]; /* feeder pipe */ close(ctx->pipe_feed[0]); But if the fork_feeder process runs after the parent marks the fds unused, the fork feeder would end up with a -1 in ctx->pipe_in right ? The two threads don't share the fds but they do share the same VM and hence changes to 'ctx' in one process is visible in the other right ? Sukadev _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers