mirror of https://github.com/mkerrisk/man-pages
7693d1e5c0
Since glibc 2.25 the PID cache is removed. Rationale given in the release notes: https://sourceware.org/glibc/wiki/Release/2.25#pid_cache_removal ~~~ 3.2.3. Calls to getpid are no longer cached The PID cache used by glibc has been removed. In certain scenarios the cache was not 100% reliable and because of that it was deemed safer to remove the cache than to potentially return a wrong answer. Applications performing getpid() calls in a loop will see the worst case performance degradation as the library call will perform a system call at each invocation. Such application uses were known to exist at least in OpenSSL (fork()-based PRNG invalidation), but supporting the performance of that specific invalidation mechanism was not judged to have sufficient value against immediate and long-term benefits of removing the cache. Functional reasons exist for the PID cache removal including problems with PID namespaces, interoperability with raw system calls (BZ#17214, Chrome: Issue 800183004), and improvements to spawn (BZ#19957). Performance is actually increased in pthread_create() with the removal of the cache since the implementation no longer needs to perform an invalidation step. Applications performing getpid() in a loop that need to do some level of fork()-based invalidation can instead use pthread_atfork() to register handlers to handle the invalidation. There is work-in-progress to make pthread_atfork() available to applications that do not link against libpthread.so (Provide pthread_atfork() without libpthread.so). Other kinds of invalidation are not supported and the glibc community will actively look at a kernel assisted mechanism for state management across fork(), vfork(), clone() and other interfaces which can benefit from such semantics. It is the same type of solution required for crypto PRNG reset across such API calls. ~~~ Signed-off-by: Carlos O'Donell <carlos@redhat.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com> |
||
---|---|---|
man1 | ||
man2 | ||
man3 | ||
man4 | ||
man5 | ||
man6 | ||
man7 | ||
man8 | ||
scripts | ||
Changes | ||
Changes.old | ||
Makefile | ||
README | ||
man-pages-4.12.Announce | ||
man-pages-4.12.lsm |
README
This package contains Linux man pages for sections 1 through 8. Some more information is given in the 'man-pages-x.y.Announce' file. Installing and uninstalling =========================== "make install" will copy these man pages to /usr/share/man/man[1-8]. To install to a path different from /usr, use "make install prefix=/install/path". "make remove" or "make uninstall" will remove any man page in this distribution from its destination. Use with caution, and remember to use "prefix" if desired, as with the "install" target. "make" or "make all" will perform "make uninstall" followed by "make install". Man page overlap and duplication ================================ Note that sometimes these pages are duplicates of pages also distributed in other packages. This has been reported about: man page also found in ------------------------------------- resolver.3 bind-utils, bind9utils resolv.conf.5 " passwd.5 shadow, passwd mailaddr.7 ? Copyrights ========== See the 'man-pages-x.y.Announce' file. Homepage ======== For much more about the Linux man-pages project, see http://www.kernel.org/doc/man-pages/index.html.