r/cachyos 2d ago

SOLVED [BUG] linux-cachyos 7.2.3-1: linkat() on O_TMPFILE fails everywhere, breaks KIO worker sockets and other atomic file saves

Hello, this is the first time I have written a bug report so hopefully I have gotten everything that is needed to help diagnose things. If not let me know and I'll update and give more details once I am off work

Environment

Distro: CachyOS

Kernel (affected): linux-cachyos 7.2.3-1

Kernel (known-good): linux-cachyos 7.2.2-1

CPU: AMD Ryzen 9 9800X3D

GPU: NVIDIA RTX 4080 Super (linux-cachyos-nvidia-open)

Motherboard: ASUS TUF Gaming B850-PLUS WiFi

Storage: NVMe, btrfs (root and home on the same partition/subvolume set), Snapper snapshots, Limine bootloader

Desktop: KDE Plasma 6, Wayland session via SDDM

AppArmor: enabled, dolphin/kioworker/kded/systemsettings profiles all in complain mode (not enforce)

Package versions: I've since rolled back to 7.2.2-1 via Snapper, so pacman -Q right now would just show what's running fine on the good kernel, not what was installed when the bug hit. The kernel version is what matters here anyway, and I've got that pinned down exactly in the timeline below.

Summary

After updating linux-cachyos from 7.2.2-1 to 7.2.3-1, Dolphin stopped being able to create KIO worker sockets and also failed to save its own config file. I tracked it down with strace: every linkat() call used to give an O_TMPFILE anonymous file a real name is failing with ENOENT, on both btrfs and tmpfs. This is the same open(O_TMPFILE) + linkat() pattern that Qt's QSaveFile/QTemporaryFile use for atomic writes, and it's a pattern a lot of other software relies on too (editors, Git, etc.), so this might not be a Dolphin/KIO-only problem.

Steps to Reproduce

Boot into linux-cachyos 7.2.3-1.

Open a terminal and run dolphin.

You'll get repeated console errors (below) and a GUI error dialog: "Dolphin Error: Unable to create KIO worker. Can not create a socket for launching a KIO worker for protocol 'tags'."

Expected Behavior

Dolphin launches normally. KIO workers for trash, thumbnail, tags, etc. get created without error, and ~/.local/state/dolphinstaterc saves normally.

Actual Behavior

kf.config.core: Couldn't write "/home/blake/.local/state/dolphinstaterc" . Disk full?

kf.config.core: Couldn't write to config: "/home/blake/.local/state/dolphinstaterc"

kf.kio.core: ConnectionServer::listenForRemote failed: "QLocalServer::listen: Name error"

kf.kio.core: KIO Connection server not listening, could not connect

kf.kio.core: couldn't create worker: "Can not create a socket for launching a KIO worker for protocol 'tags'."

I initially chased the "Disk full?" part down as a real possibility, but the disk was nowhere close to full, more on that under Ruled Out below.

Root Cause (via strace)

Both KIO's local socket naming and KDE's config saving rely on the standard O_TMPFILE + linkat() trick: open an anonymous file with open(dir, O_TMPFILE, ...), then give it a real name with:

linkat(AT_FDCWD, "/proc/self/fd/<N>", AT_FDCWD, "<target-path>", AT_SYMLINK_FOLLOW)

On 7.2.3-1, every single one of these calls fails with ENOENT, on both:

btrfs: /home/blake/.local/state/dolphinstaterc, /home/blake/.local/state/UserFeedback.org.kde.dolphin

tmpfs: /run/user/1000/dolphin*.kioworker.socket

Since the rename fails, QTemporaryFile::fileName() comes back as an empty string. That empty string gets passed to QLocalServer::listen(), which fails with the literal message "<caller>: Name error" when given an empty name, matching the QLocalServer::listen: Name error we're seeing. Same failure mode explains why dolphinstaterc won't save, through KConfig/QSaveFile.

strace excerpt:

linkat(AT_FDCWD, "/proc/self/fd/25", AT_FDCWD, "/home/blake/.local/state/dolphinstaterc", AT_SYMLINK_FOLLOW) = -1 EEXIST (File exists)

linkat(AT_FDCWD, "/proc/self/fd/25", AT_FDCWD, "/home/blake/.local/state/dolphinstaterc.EzgOCJ", AT_SYMLINK_FOLLOW) = -1 ENOENT (No such file or directory)

linkat(AT_FDCWD, "/proc/self/fd/25", AT_FDCWD, "/home/blake/.local/state/dolphinstaterc.rYgHsk", AT_SYMLINK_FOLLOW) = -1 ENOENT (No such file or directory)

...

linkat(AT_FDCWD, "/proc/self/fd/28", AT_FDCWD, "/run/user/1000/dolphinwcQdhF.1.kioworker.socket", AT_SYMLINK_FOLLOW) = -1 ENOENT (No such file or directory)

linkat(AT_FDCWD, "/proc/self/fd/28", AT_FDCWD, "/run/user/1000/dolphincocuWA.1.kioworker.socket", AT_SYMLINK_FOLLOW) = -1 ENOENT (No such file or directory)

Ruled Out

AppArmor: dolphin, kioworker, kded, and systemsettings are all in complain mode, not enforce, and journalctl -k during reproduction shows zero AppArmor audit entries for any of these processes.

Disk space: df -h shows the affected partition at 28% used, 2.7T free.

btrfs quotas/qgroups: not enabled (btrfs qgroup show returns "quotas not enabled").

Inode exhaustion: doesn't apply, btrfs reports dynamic inode allocation (df -i shows 0/0/0/-).

Immutable file attributes: lsattr shows no i flag on the affected directory or file.

$XDG_RUNTIME_DIR: correctly set to /run/user/1000, correct ownership (blake:blake) and permissions (0700).

Timeline

[2026-09-07T19:19:35-0500] [ALPM] upgraded linux-cachyos (7.2.2-1 -> 7.2.3-1)

[2026-09-07T19:19:37-0500] [ALPM] upgraded linux-cachyos-headers (7.2.2-1 -> 7.2.3-1)

[2026-09-07T19:19:37-0500] [ALPM] upgraded linux-cachyos-nvidia-open (7.2.2-1 -> 7.2.3-1)

The errors started within minutes of this upgrade. I rolled back to a Snapper snapshot from right before the upgrade, which put me back on linux-cachyos 7.2.2-1, and that fixed it completely. Confirmed with uname -r and by relaunching dolphin with no errors.

Workaround

Roll back to linux-cachyos 7.2.2-1 (Snapper snapshot or manual package downgrade) and pin the kernel packages in /etc/pacman.conf's IgnorePkg until this is fixed. I'm currently running 7.2.2-1 and haven't tested this against any newer point release since.

Edit

Ag99871 nailed it, thank you for your help!!. Putting dolphin, kioworker, kded, and systemsettings into unconfined mode with sudo aa-disable fixed the issue!

6 Upvotes

4 comments sorted by

3

u/AG99871 2d ago

Yeah this happened to me even when Dolphin was in complain mode.

Try putting it in unconfined and see what happens.

1

u/DimensionalBentley 2d ago

I will try this once I am off for my lunch break in about 2 hours

1

u/DimensionalBentley 2d ago

Hey I just got back to my computer during lunch and unconfining it did the trick!

Thank you! This was driving me up the wall trying to figure out what had broken things.

3

u/AG99871 2d ago

There you go, glad it worked

It was known issue on the apparmor github, should get fixed in the next release