Skip to content

systemd-tmpfiles does not pick up socket liveliness if process runs in different network namespace #42771

Description

@martinetd

systemd version the issue has been seen with

259.6

Used distribution

Fedora 44

Linux kernel version used

6.19.14-300.fc44.x86_64

CPU architectures issue was seen on

x86_64

Component

systemd-tmpfiles

Expected behaviour you didn't see

systemd-tmpfiles regularily removes my X11 unix socket /tmp/.X11-unix/X0 because I run xwayland-satellite in a restricted bwrap environment in a different network namespace.

Running with debug logs, I'd expect to see

Jun 27 19:43:01 xxx systemd-tmpfiles[174148]: Skipping "/tmp/.X11-unix/X0": live socket.

Unexpected behaviour you saw

But instead only get timestamp considered:

Jun 27 19:43:12 xxx systemd-tmpfiles[174312]: File "/tmp/.X11-unix/X0": modify time Sat 2026-06-27 19:43:08.154012 JST is too new.

Steps to reproduce the problem

It's easy to reproduce running a dummy program listening there in bwrap, e.g.

bwrap --unshare-net --dev-bind / / socat unix-listen:/tmp/.X11-unix/X2 stdio:

without --unshare-net the socket is listed in /proc/net/unix, but as it is above it's not.

Additional program output to the terminal or log subsystem illustrating the issue

Inspecting with strace I understand that it's because systemd-tmpfiles checks for liveliness through /proc/net/unix, but running in a separate network namespace means the socket is not listed there: is there any other way to check efficiently? (e.g. lsof does pick it up but it's not exactly great to parse all open files..)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions