lkml.org 
[lkml]   [2004]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: clone() <-> getpid() bug in 2.6?


    On Sat, 5 Jun 2004, Russell Leighton wrote:
    >
    > I have a test program (see attached) that shows what looks like a bug in
    > 2.6.5-1.358 (FedoraCore2)...and breaks my program :(
    >
    > In summary, I am doing:
    >
    > clone(run_thread, stack + sizeof(stack) -1,
    > CLONE_FS|CLONE_FILES|CLONE_VM|SIGCHLD, NULL))
    >
    > According to the man page the child process should have its own pid as
    > returned by getpid()...much like fork().
    >
    > In 2.6 the child receives the parent's pid from getpid(), while 2.4
    > works as documented:
    >
    > In 2.4 the test program does:
    > parent pid: 26647
    > clone returned pid: 26648
    > thread reported pid: 26648
    >
    > In 2.6 the test program does:
    > parent pid: 16665
    > thread reported pid: 16665
    > clone returned pid: 16666

    Hmm.. The above is the correct behaviour if you use CLONE_THREAD
    ("getpid()" will then return the _thread_ ID), but it shouldn't happen
    without that. And clearly you don't have it set.

    And indeed, it doesn't happen for me on my system:

    parent pid: 13552
    thread reported pid: 13553
    clone returned pid: 13553

    so I wonder if either the Fedora libc always adds that CLONE_THREAD thing
    to the clone() calls, or whether the FC2 kernel is buggy.

    Arjan?

    Linus
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-11-18 23:46    [W:0.021 / U:39.276 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site