"Michael Kerrisk (man-pages)" [off-list ref] writes:
Hi Eric,
On Tue, Jan 1, 2013 at 10:39 AM, Eric W. Biederman
[off-list ref] wrote:
quoted
"Michael Kerrisk (man-pages)" [off-list ref] writes:
quoted
Hi Eric,
On Thu, Dec 27, 2012 at 6:47 PM, Eric W. Biederman
[off-list ref] wrote:
quoted
There is one other bit that needs to be documented in clone, although
I am not certain where/how.
The sequences:
unshare(CLONE_NEWPID).
clone(CLONE_VM)
setns(fd, CLONE_NEWPID).
clone(CLONE_VM).
Now fail.
Can you define "now" please. Which kernel version?
3.8
The sequence was impossible in 3.7.
I think that change that made that impossible happened in the 3.8-rc1 to
^^^^^^^^^ illegal 3.8-rc1 made the sequence possible.
quoted
3.8-rc2 window.
Adding something along these lines to the man page would be fine, but
we need some text to explain *why* these sequences fail. Could you
send me a sentence or two about that?
The basic principle is every thread in a process must be in the same pid
namespace. As unshare(CLONE_NEWPID) and setns(fd, CLONE_NEWPID) only
change the pid namespace for created children creating a child process
that is a thread would put that thread in a different pid namespace.
Creating a multithreaded application and then setns(fd, CLONE_NEWPID or
clone(CLONE_NEWPID) was outlawed because it was two bizarre and no one
cared. Oleg noticed you could create the threads afterwards and get
into a bizarre state that no one wanted to support.
Eric