Skip to content

Commit db32b98

Browse files
fix(live): mask systemd-localed — the session-killer storm's single source (#258)
Re-test WITHOUT o-tiling (zz4 verified in-VM) crashed gnome-shell again at the same install phase — SIGABRT this time — so the extension was an amplifier, not the trigger. Both runs show anaconda's localization tasks flapping the LIVE system's X11 layout via locale1 seconds before the shell dies (SEGV in update_clock/g_settings_get_enum under the GSettings change storm, then ABRT). localed is useless in a throwaway live: in-session layout switching goes through gnome-shell input-sources, and the target's keyboard is written via --root. Mask it (dbus-activated — disable is not enough) so the storm cannot start; incident note extended with part 3. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 8f0a77c commit db32b98

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

docs/notes/2026-07-04-live-session-crash-during-install.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,26 @@ Follow-up hardening shipped with this note:
8282
installed disk — the truncated-install sensor, cause-agnostic.
8383
- This also most likely explains CyberOto's original broken-flatpaks report.
8484

85+
## Part 3 — re-test WITHOUT o-tiling: the shell still dies → localed masked
86+
87+
Re-test on the fixed fast ISO (zz4 confirmed in-VM: o-tiling not loaded, zero
88+
global.log errors) ended the same way: session gone at the end of the
89+
install, new gnome-shell coredump — this time **SIGABRT** (21:40:05). So
90+
o-tiling was an incidental amplifier, not the trigger: gnome-shell 50.2 dies
91+
under Anaconda's configuration-phase GSettings storm on its own. The storm's
92+
single source is anaconda's localization tasks driving the LIVE system's
93+
locale1 (X11 layout flapping in the journal both runs).
94+
95+
Mitigation shipped: the live env now **masks systemd-localed.service**. It is
96+
useless in a throwaway live (in-session layout switching goes through
97+
gnome-shell input-sources, not locale1; the target's keyboard is written via
98+
--root), and with locale1 unreachable the storm cannot start. The o-tiling
99+
console.log hotfix remains correct on its own merits.
100+
101+
Upstream: gnome-shell/gnome-desktop crash reproduced twice with different
102+
signals (SEGV in update_clock/g_settings_get_enum, then ABRT) — worth filing
103+
with both coredumps if masking confirms the trigger.
104+
85105
## Lessons
86106

87107
- "Logout at end of install" had TWO distinct root causes months apart

live-env/src/build.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,21 @@ OVERRIDE
459459
# Recompile schemas in case the profile/installer added overrides.
460460
glib-compile-schemas /usr/share/glib-2.0/schemas || true
461461

462+
# MASK systemd-localed in the LIVE env (2026-07-04 incident, part 3 — the
463+
# root trigger). During Anaconda's configuration phase its localization
464+
# tasks drive the LIVE system's locale1: the journal shows the X11 layout
465+
# flapping ('us' → '' → 'us' → '') seconds before gnome-shell dies — first
466+
# run SIGSEGV in update_clock/g_settings_get_enum (use-after-free under the
467+
# resulting GSettings change storm), re-test WITHOUT o-tiling SIGABRT at the
468+
# same phase. Shell dead on Wayland = whole session gone mid-install, and
469+
# anaconda (which stops when its WebUI viewer disappears) truncates the
470+
# %post chain — the broken-flatpaks-on-first-boot P0. localed is useless in
471+
# a throwaway live: in-session layout switching goes through gnome-shell's
472+
# input-sources (gsettings), not locale1, and the TARGET's keyboard config
473+
# is written via --root by anaconda. Mask (not disable: it's dbus-activated)
474+
# so the storm source cannot start at all.
475+
systemctl mask systemd-localed.service
476+
462477
# Disable services that must not run inside the LIVE session. Margine is
463478
# Bluefin-DX-based, so it carries the ublue/brew/flatpak-preinstall units
464479
# plus rpm-ostree timers — all of which are meaningless (or harmful) in a

0 commit comments

Comments
 (0)