From 5f09c5ee3841755e7f463ef7e4702cd03a46820a Mon Sep 17 00:00:00 2001 From: Gabriel Brown Date: Wed, 26 Aug 2026 10:48:47 -0400 Subject: [PATCH] The document portal may not claim started until its mount exists Third recurrence of the stale-mount bug: the ExecStartPre cleanup ran on clean ground and the portal still came up mountless, sitting active while every fresh flatpak sandbox failed to build. Add an ExecStartPost that polls for the fuse mount and fails the start after five seconds without one, so a mountless portal shows up failed in the journal and the next bus activation retries from the cleanup instead of lingering broken. Claude-Session: https://claude.ai/code/session_01CTL7G5u3iDf1NCM6rTyCES --- .../panama-stale-mount.conf | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/config/copy/etc/systemd/user/xdg-document-portal.service.d/panama-stale-mount.conf b/config/copy/etc/systemd/user/xdg-document-portal.service.d/panama-stale-mount.conf index cbaef50..0a2a34e 100644 --- a/config/copy/etc/systemd/user/xdg-document-portal.service.d/panama-stale-mount.conf +++ b/config/copy/etc/systemd/user/xdg-document-portal.service.d/panama-stale-mount.conf @@ -18,5 +18,18 @@ # # `-` because a clean start has nothing to unmount and fusermount3 exits 1 # saying so, which is not a failure to start on. +# +# The unmount alone did not close the hole: the third recurrence (2026-08-26) +# started on ground the ExecStartPre had cleaned and still came up with no +# mount, sitting active-and-broken for fourteen hours until the next fresh +# flatpak launch found it. Hence ExecStartPost: the unit is not "started" +# until the mount it exists to provide actually exists. Type=dbus declares +# readiness at bus-name acquisition, which can land before the fuse thread +# has the mount up, so this polls rather than checks once. If five seconds +# pass without a mount, the start fails -- loudly, in the journal, as failed +# -- and the next bus activation retries from the ExecStartPre cleanup +# instead of every sandbox build failing against a unit that claims to be +# fine. [Service] ExecStartPre=-/usr/bin/fusermount3 -u /run/user/%U/doc +ExecStartPost=/usr/bin/timeout 5 /bin/sh -c 'until /usr/bin/mountpoint -q /run/user/%U/doc; do /usr/bin/sleep 0.2; done'