Bug#1072204: setupcon: race condition with systemd-tmpfiles
Package: console-setup
Version: 1.226
Severity: normal
Tags: patch
Dear Maintainer,
On occasion I have a situation where console-setup.service fails to
start up due to a race condition. After investigating this, it was
already reported in Ubuntu back in 2019 and I have verified that the
patch they have implemented resolves the issue for me:
admin@boxpc001-a8f7693fbff14940ade0e3247b1cea8e:~$ for s in $(systemctl list-units --type service --full --failed --plain --no-legend | cut -f 1 -d ' '); do journalctl --boot --no-pager --unit "${s}"; done
May 28 13:15:05 boxpc001 systemd[1]: Starting console-setup.service - Set console font and keymap...
May 28 13:15:05 boxpc001 console-setup.sh[588]: /usr/bin/setupcon: 999: cannot open /tmp/tmpkbd.hoHrPK: No such file
May 28 13:15:05 boxpc001 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
May 28 13:15:05 boxpc001 systemd[1]: console-setup.service: Failed with result 'exit-code'.
May 28 13:15:05 boxpc001 systemd[1]: Failed to start console-setup.service - Set console font and keymap.
-- System Information:
Debian Release: trixie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (400, 'bookworm'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 6.7.12-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages console-setup depends on:
ii console-setup-linux 1.226
ii debconf [debconf-2.0] 1.5.86
ii keyboard-configuration 1.226
ii xkb-data 2.41-2
console-setup recommends no packages.
Versions of packages console-setup suggests:
ii locales 2.38-11
ii lsb-base 11.6
ii sysvinit-utils [lsb-base] 3.09-1
Versions of packages keyboard-configuration depends on:
ii debconf [debconf-2.0] 1.5.86
ii liblocale-gettext-perl 1.07-7
ii xkb-data 2.41-2
Versions of packages console-setup-linux depends on:
ii init-system-helpers 1.66
ii kbd 2.6.4-2
ii keyboard-configuration 1.226
console-setup-linux suggests no packages.
Versions of packages console-setup is related to:
pn console-common <none>
pn console-data <none>
pn console-tools <none>
ii gnome-control-center 1:46.0.1-1
ii kbd 2.6.4-2
ii systemd 255.5-1
-- debconf information:
* keyboard-configuration/optionscode:
console-setup/use_system_font:
console-setup/store_defaults_in_debconf_db: true
debian-installer/console-setup-udeb/title:
keyboard-configuration/unsupported_config_layout: true
* keyboard-configuration/model: Generic 105-key PC
* keyboard-configuration/store_defaults_in_debconf_db: true
* keyboard-configuration/switch: No temporary switch
* keyboard-configuration/layout:
keyboard-configuration/unsupported_layout: true
console-setup/fontsize: 8x16
console-setup/codeset47: # Latin1 and Latin5 - western Europe and Turkic languages
console-setup/guess_font:
* keyboard-configuration/layoutcode: us
* keyboard-configuration/altgr: The default for the keyboard layout
console-setup/fontsize-fb47: 8x16
* keyboard-configuration/xkb-keymap: us
* keyboard-configuration/variantcode:
* keyboard-configuration/toggle: No toggling
* keyboard-configuration/modelcode: pc105
* keyboard-configuration/compose: No compose key
console-setup/fontface47: Fixed
console-setup/framebuffer_only:
* keyboard-configuration/other:
console-setup/fontsize-text47: 8x16
console-setup/codesetcode: Lat15
* keyboard-configuration/variant: English (US)
keyboard-configuration/unsupported_options: true
console-setup/charmap47: UTF-8
keyboard-configuration/ctrl_alt_bksp: false
keyboard-configuration/unsupported_config_options: true
diff -Nru console-setup-1.108ubuntu15.4/debian/changelog console-setup-1.108ubuntu15.5/debian/changelog
--- console-setup-1.108ubuntu15.4/debian/changelog 2017-10-05 19:36:07.000000000 +0000
+++ console-setup-1.108ubuntu15.5/debian/changelog 2019-04-10 20:16:29.000000000 +0000
@@ -1,3 +1,13 @@
+console-setup (1.108ubuntu15.5) xenial; urgency=medium
+
+ * setupcon: use /run for tempfiles (and dump the various unnecessary
+ fallback paths), since /run is always mountable rw at least as early as
+ /tmp is and is guaranteed to be safe from tmpcleaners at boot. Only keep
+ /tmp as a fallback in case we have access to write to /tmp and to a
+ console, but not to /run. LP: #1824227.
+
+ -- Steve Langasek <steve.langasek@ubuntu.com> Wed, 10 Apr 2019 13:16:29 -0700
+
console-setup (1.108ubuntu15.4) xenial; urgency=medium
* Drop dependency from console-setup to initramfs-tools |
diff -Nru console-setup-1.108ubuntu15.4/setupcon console-setup-1.108ubuntu15.5/setupcon
--- console-setup-1.108ubuntu15.4/setupcon 2016-04-04 17:41:49.000000000 +0000
+++ console-setup-1.108ubuntu15.5/setupcon 2019-04-10 20:16:13.000000000 +0000
@@ -56,11 +56,8 @@
local tmp
tmp="$TMPFILE"
if \
- TMPFILE=`mktemp /tmp/tmpkbd.XXXXXX 2>/dev/null` \
- || TMPFILE=`mktemp /run/tmpkbd.XXXXXX 2>/dev/null` \
- || TMPFILE=`mktemp /dev/.tmpkbd.XXXXXX 2>/dev/null` \
- || TMPFILE=`mktemp /lib/init/rw/tmpkbd.XXXXXX 2>/dev/null` \
- || TMPFILE=`mktemp 2>/dev/null`
+ TMPFILE=`mktemp /run/tmpkbd.XXXXXX 2>/dev/null` \
+ || TMPFILE=`mktemp /tmp/tmpkbd.XXXXXX 2>/dev/null`
then
if [ -z "$tmp" ]; then
trap 'rm -f "$TMPFILE" >/dev/null 2>&1' 0
Reply to: