Hi Bill,

I don't have the context about gha-runner to answer regarding their use of LTTng.

I can however, give a bit of context about how the those shared memory allocations are used within the scope of LTTng.

These shared memory sections are used for presence/absence notifications between lttng-sessiond and applications instrumented with LTTng-UST.

`lttng-ust-wait-8` is intended to be used for applications that are running as root, or those run as non-root users that are members of the tracing group (if configured).

`lttng-ust-wait-8-NNN` is used for non-root instrumented applications where NNN is the UID of the user.

When either lttng-sessiond or an application instrumented with lttng-ust starts, the shared memory sections will be allocated. There is special treatment for `lttng-ust-wait-8` since it may be used to notify non-root applications that are run by users that are members of the tracing group. In that case, it is created with an extended mode[1], as you are observing. Those permissions are updated when there is a root lttng-sessiond that starts and opens or creates a shared memory section at the same path[2].


On 3/10/25 10:12 AM, bill robertson via lttng-dev wrote:
GHA runners appear to use lttng-ust for some sort of IPC between runners on
the same machine.

$ ll /dev/shm/

-rw-rw-rw- 1 gha-runner-7 gha-runner-7  4096 Feb 20 04:03 lttng-ust-wait-8
-rw-r----- 1 gha-runner-8 gha-runner-8  4096 Feb 20 04:03 lttng-ust-wait-8-558
-rw-r----- 1 gha-runner-7 gha-runner-7  4096 Feb 20 04:03 lttng-ust-wait-8-559
-rw-r----- 1 gha-runner-6 gha-runner-6  4096 Feb 20 04:03 lttng-ust-wait-8-560
-rw-r----- 1 gha-runner-5 gha-runner-5  4096 Feb 20 04:03 lttng-ust-wait-8-561
-rw-r----- 1 gha-runner-4 gha-runner-4  4096 Feb 20 04:03 lttng-ust-wait-8-562
-rw-r----- 1 gha-runner-3 gha-runner-3  4096 Feb 20 04:03 lttng-ust-wait-8-563
-rw-r----- 1 gha-runner-2 gha-runner-2  4096 Feb 20 04:03 lttng-ust-wait-8-564
-rw-r----- 1 gha-runner-1 gha-runner-1  4096 Feb 20 04:03 lttng-ust-wait-8-565


I assume that this is their code, and not some configuration issue on the
host machine, but if this may not be the case, can someone explain what can
be done or point me to information on the subject?

Could you clarify what you are trying to achieve?


Otherwise, is there some sort of environment variable or other setting that
lttng will reference when creating this shared memory section such that it
is not world-writable? All of the runners run under user accounts that are
in a common group.

In LTTng-UST 2.14+, setting `LTTNG_UST_APP_PATH`[3] will disable connections to root (global) lttng-sessionds for instrumented applications.


Thanks!
Bill


[1]: https://github.com/lttng/lttng-ust/blob/ce89cb05f0fc02b68396220815070996fa0bb4a5/src/lib/lttng-ust/lttng-ust-comm.c#L1705 [2]: https://github.com/lttng/lttng-tools/blob/e995b146f3456dd51fd76288db6dae9efdbce592/src/common/shm.cpp#L118 [3]: https://github.com/lttng/lttng-ust/blob/ce89cb05f0fc02b68396220815070996fa0bb4a5/src/lib/lttng-ust/lttng-ust-comm.c#L611C9-L611C27

Reply via email to