Re: [PATCH v5 2/4] man/man5/tunables.conf: Document system-wide tunables config
Alejandro Colomar <[email protected]>
| Newsgroups | org.kernel.vger.linux-man |
|---|---|
| Message-ID | <anUbLZzOLY2qM6iP@devuan> |
Hi DJ, > Date: 2026-08-06 18:15:15-0400 > From: DJ Delorie <[email protected]> > > Alejandro Colomar <[email protected]> writes: > > You forgot to sign. > > I will never remember that... :-P > > >> +The resulting data is read when a new process is created by > >> +.IR ld.so . > > > > Sorry for noticing this in v4; I forgot about it. I see this unresolved > > issue from earlier versions remains. > > A program is a file on disk. A process is a running memory image. Yup. fork(3) creates a process (produces a new PID). execve(2) replaces the image of the current process with a program read from disk (or in short, executes a program in the current process). > > Neither fork() nor exec() cause the tunables to be loaded, the process > itself has to do that. For dynamic ELF programs/processes built with > glibc, ld.so does it before it passes control to the ELF image. There > are other types of programs/processes that do not use ld.so and thus do > not read the tunables cache (which is called "ld.so.cache" for a reason ;-) Hmmmmm, let's say you call execve(2) several times without any fork(2)s. Assuming a that the program paths that you pass to execve(2) are all dynamic ELF programs built with glibc, I guess for every time you call execve(2), ld.so(8) will be run, and the tunables stored in ld.so.cache will be used. Is this correct? #include <unistd.h> int main(int, char *argv[]) { sleep(1); execve("proc/self/exe", argv, NULL); } Let's also say you fork(2) several times, without any execve(2) calls. I suppose that won't trigger any of this, right? #include <unistd.h> int main(void) { for (int i = 0; i < 10; i++) { sleep(1); fork(); } } From my understanding, only the first program will trigger this more than once, right? If so, I'd use the same wording that execve(2) uses: execve() executes the program referred to by path. That is, execve(2) executes programs, and ld.so.cache is read when a program is executed (in the current process). > > I don't know how to say this clearly with fewer words... > > >> +The syntax allows lines to start with the keyword > >> +.I include > > > > s/I/B/ (since it's a literal, not a variable) > > Fixed. > Cheers, Alex -- <https://www.alejandro-colomar.es>
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEES7Jt9u9GbmlWADAi64mZXMKQwqkFAmp1IZcACgkQ64mZXMKQ wqmbkxAAg8gYx1clsV0TE9RAh/4iTJU0C/kLszwWiKi+YuB7rHjnpWWjxCSKl8wg g+1Vq8uJj6yy1j9lpJF9I+thJWcsUloZ+tAlKSFR74NYqUcs1GOfi3XNJhNVMjmS vQIB/yxp+cBRCpKMEopSDwtdHlZufRnt7vve4FOPoVFlMjOvJyuwpeRIqvD2Sy/L xqzZ/hJ+SLTSuMqQwBU4hWxeOqPXy2YfH15UIIgA+3eDx2Cn65nOfYEHFuZhexWg uod5m5dqSdg/wg1VhOoTsFkGfIB2NjOuj4EbEr5RgQ7ND0IRRMAQylo29GnZghbf jenD9EepEezGNxCJdiJZr0tiViaRJDgXp7YcfRicd/sYDpmSOV2+9VSfmnx2F9Iv lixjUd8RsNlArj6oWRVmX3Q7aOKGLR8nSrOlAm/MgYdlKNz80Y2LJdhrjGqAR1i/ oQyQjt1j2NQ5aVGya5r7rA1AN5Xq5BbNAsQNz7DiU5SXK9d8TWn1S7DLfsQ6tjE/ ia/vv0i8F6gSP+Pxjk1bqMBQc9Bbas4nfUojAc3xoPblLRkh/b7/1T4tm46d8vHS UXOiUwVG5yBYjJRLJQDIeJvheS8hPff3mc6y8w4D5zr5Han8YYxXjirEjKeYTT6z qCRB8ZXikMVIKPvm/WHG9Gvcz2GWwLNuUYqzwBnlRZEmjKi9UtU= =SERM -----END PGP SIGNATURE-----