"Michael Kerrisk (man-pages)" <mtk.manpages@xxxxxxxxx> writes: > Hi Eric, > > On Tue, Jan 1, 2013 at 10:39 AM, Eric W. Biederman > <ebiederm@xxxxxxxxxxxx> wrote: >> "Michael Kerrisk (man-pages)" <mtk.manpages@xxxxxxxxx> writes: >> >>> Hi Eric, >>> >>> On Thu, Dec 27, 2012 at 6:47 PM, Eric W. Biederman >>> <ebiederm@xxxxxxxxxxxx> wrote: >>>> >>>> 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. >> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html