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-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.