From: Blaisorblade <bla...@ya...> - 2004-11-15 17:19:44
|
On Wednesday 10 November 2004 22:19, Henrik Nordstrom wrote: > On Wed, 10 Nov 2004, Geert Uytterhoeven wrote: > > Why? getpid() is just an API call. No one guarantees it's actually a > > syscall. And IMHO caching getpid() is allowed, since the returned value > > won't change anyway. The cache must be cleared on fork() (which is done) and on clone(). > And in case of pthreads SHOULD be different from the Linux process ID. He was misunderstanding the thread - UML calls clone() without CLONE_THREAD, so that on this aspect it is fork()-like, so no thread group is created, just a child process. Which has a different PID. But glibc does not clean the thread-local-storage (or just the getpid() cached value in it) appropriately when using clone(). -- Paolo Giarrusso, aka Blaisorblade Linux registered user n. 292729 |