Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-9] src



Module Name:    src
Committed By:   martin
Date:           Wed May 13 18:08:38 UTC 2020

Modified Files:
        src/lib/libc/gen [netbsd-9]: pthread_atfork.c
        src/libexec/ld.elf_so [netbsd-9]: rtld.c rtld.h symbols.map

Log Message:
Pull up following revision(s) (requested by chs in ticket #907):

        libexec/ld.elf_so/rtld.c: revision 1.205
        libexec/ld.elf_so/rtld.h: revision 1.140
        libexec/ld.elf_so/symbols.map: revision 1.3
        libexec/ld.elf_so/symbols.map: revision 1.4
        lib/libc/gen/pthread_atfork.c: revision 1.13
        lib/libc/gen/pthread_atfork.c: revision 1.14
        libexec/ld.elf_so/rtld.h: revision 1.139
        libexec/ld.elf_so/rtld.c: revision 1.204

Introduce intermediate locking for fork, so that the dynamic linker is
in a consistent state. This most importantly avoids races between dlopen
and friends and fork, potentially resulting in dead locks in the child
when it itself tries to acquire locks.

Rename __atomic_fork to __locked_fork and give it &errno as argument.
rtld and libc use different storage, so the initial version would
incorrectly report the failure reason for fork().

There is still a small race condition inside ld.elf_so as it doesn't use
thread-safe errno internally, but that's a more contained internal
issue.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.10.18.1 src/lib/libc/gen/pthread_atfork.c
cvs rdiff -u -r1.197.2.3 -r1.197.2.4 src/libexec/ld.elf_so/rtld.c
cvs rdiff -u -r1.136 -r1.136.2.1 src/libexec/ld.elf_so/rtld.h
cvs rdiff -u -r1.2 -r1.2.8.1 src/libexec/ld.elf_so/symbols.map

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index