← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1824227] Re: console-setup failure due to race with systemd-tmpfiles

 

** Description changed:

+ [SRU Justification]
  I'm seeing a console-setup.service failure quite regularly in testing
  where the temp file that should have been created can't be found.
  This is a regular xenial cloud image.
  
-   19:51:13 systemd-tmpfiles[485]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
-   ...
-   19:51:13 systemd[1]: Starting Set console font and keymap...
-   19:51:15 setupcon[455]: /bin/setupcon: 809: /bin/setupcon: cannot open /tmp/tmpkbd.a8FGSs: No such file   
-   19:51:15 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
-   19:51:15 systemd[1]: Failed to start Set console font and keymap.
-   19:51:15 systemd[1]: console-setup.service: Unit entered failed state.
-   19:51:15 systemd[1]: console-setup.service: Failed with result 'exit-code'.
-         ...
+   19:51:13 systemd-tmpfiles[485]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
+   ...
+   19:51:13 systemd[1]: Starting Set console font and keymap...
+   19:51:15 setupcon[455]: /bin/setupcon: 809: /bin/setupcon: cannot open /tmp/tmpkbd.a8FGSs: No such file
+   19:51:15 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
+   19:51:15 systemd[1]: Failed to start Set console font and keymap.
+   19:51:15 systemd[1]: console-setup.service: Unit entered failed state.
+   19:51:15 systemd[1]: console-setup.service: Failed with result 'exit-code'.
+         ...
  
  /bin/setupcon has a lovely tempfile function that looks like:
-   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`
+   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`
  
  Here's our edited IRC conversation on the bug:
  <@vorlon> so I do think you're being hit by the tmp cleaner
  <@vorlon> also this seems like bad pathological default behavior for
-           the tmp cleaner, to delete files that have just been created
+           the tmp cleaner, to delete files that have just been created
  <@vorlon> but we should fix console-setup to not rely on /tmp
  <@vorlon> and I prefer that we do that instead of trying to fiddle with
-           the ordering of the systemd units on startup
+           the ordering of the systemd units on startup
  <@vorlon> i.e. console-setup has an undeclared dependency
-           on systemd-tmpfiles-clean; let's remove the dependency
-           instead of declaring it
+           on systemd-tmpfiles-clean; let's remove the dependency
+           instead of declaring it
  
  <@vorlon> are you failing the race more often now than in the past?
  <@rcj>    vorlon: it feels like it's failing more often but I don't have
-           data to answer that.
+           data to answer that.
  
  <@vorlon> are we shipping an image with a dirty rootfs?
  <@vorlon> dirty in the sense that e2fsck doesn't take one look at it,
-           say "yep, nothing to do here" and exit
+           say "yep, nothing to do here" and exit
  <@vorlon> in the sense that this is what would make dev-sda1.device slow
-           to complete AIUI
+           to complete AIUI
  <@rcj>    would filesystem resize on first boot mark it dirty?  Because
-           that will happen
+           that will happen
  <@vorlon> huh good question
  <@vorlon> it might
  <xnox>    rcj, unclean shutdown?
  <@rcj>    xnox: first boot
+ 
+ [Test case]
+ 1. Install console-setup from -proposed
+ 2. Reboot
+ 3. Verify that `systemctl status console-setup` shows that the service has completed successfully.
+ 
+ Since this is a race, additional fuzz testing may be warranted for the
+ cloud images to confirm that the issue experienced in GCE is really
+ fixed.  However, that should not block promotion of this SRU fix since
+ there definitely is a race here that should be fixed per se even if
+ there are other issues still causing a failure in GCE.
+ 
+ [Regression potential]
+ None known.  /run is guaranteed to be mounted rw very early in boot - generally before /tmp is mounted, due to /tmp being on the rootfs that needs to be fscked before remount.  
+ 
  
  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: console-setup 1.108ubuntu15.4
  ProcVersionSignature: User Name 4.15.0-1029.31~16.04.1-gcp 4.15.18
  Uname: Linux 4.15.0-1029-gcp x86_64
  ApportVersion: 2.20.1-0ubuntu2.18
  Architecture: amd64
  Date: Wed Apr 10 19:24:12 2019
  PackageArchitecture: all
  ProcEnviron:
-  TERM=xterm-256color
-  PATH=(custom, no user)
-  XDG_RUNTIME_DIR=<set>
-  LANG=en_US.UTF-8
-  SHELL=/bin/bash
+  TERM=xterm-256color
+  PATH=(custom, no user)
+  XDG_RUNTIME_DIR=<set>
+  LANG=en_US.UTF-8
+  SHELL=/bin/bash
  SourcePackage: console-setup
  UpgradeStatus: No upgrade log present (probably fresh install)

** Also affects: console-setup (Ubuntu Xenial)
   Importance: Undecided
       Status: New

** Description changed:

  [SRU Justification]
  I'm seeing a console-setup.service failure quite regularly in testing
  where the temp file that should have been created can't be found.
  This is a regular xenial cloud image.
  
    19:51:13 systemd-tmpfiles[485]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
    ...
    19:51:13 systemd[1]: Starting Set console font and keymap...
    19:51:15 setupcon[455]: /bin/setupcon: 809: /bin/setupcon: cannot open /tmp/tmpkbd.a8FGSs: No such file
    19:51:15 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
    19:51:15 systemd[1]: Failed to start Set console font and keymap.
    19:51:15 systemd[1]: console-setup.service: Unit entered failed state.
    19:51:15 systemd[1]: console-setup.service: Failed with result 'exit-code'.
          ...
  
  /bin/setupcon has a lovely tempfile function that looks like:
    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`
  
  Here's our edited IRC conversation on the bug:
  <@vorlon> so I do think you're being hit by the tmp cleaner
  <@vorlon> also this seems like bad pathological default behavior for
            the tmp cleaner, to delete files that have just been created
  <@vorlon> but we should fix console-setup to not rely on /tmp
  <@vorlon> and I prefer that we do that instead of trying to fiddle with
            the ordering of the systemd units on startup
  <@vorlon> i.e. console-setup has an undeclared dependency
            on systemd-tmpfiles-clean; let's remove the dependency
            instead of declaring it
  
  <@vorlon> are you failing the race more often now than in the past?
  <@rcj>    vorlon: it feels like it's failing more often but I don't have
            data to answer that.
  
  <@vorlon> are we shipping an image with a dirty rootfs?
  <@vorlon> dirty in the sense that e2fsck doesn't take one look at it,
            say "yep, nothing to do here" and exit
  <@vorlon> in the sense that this is what would make dev-sda1.device slow
            to complete AIUI
  <@rcj>    would filesystem resize on first boot mark it dirty?  Because
            that will happen
  <@vorlon> huh good question
  <@vorlon> it might
  <xnox>    rcj, unclean shutdown?
  <@rcj>    xnox: first boot
  
  [Test case]
  1. Install console-setup from -proposed
  2. Reboot
  3. Verify that `systemctl status console-setup` shows that the service has completed successfully.
  
  Since this is a race, additional fuzz testing may be warranted for the
  cloud images to confirm that the issue experienced in GCE is really
  fixed.  However, that should not block promotion of this SRU fix since
  there definitely is a race here that should be fixed per se even if
  there are other issues still causing a failure in GCE.
  
  [Regression potential]
- None known.  /run is guaranteed to be mounted rw very early in boot - generally before /tmp is mounted, due to /tmp being on the rootfs that needs to be fscked before remount.  
+ None known.  /run is guaranteed to be mounted rw very early in boot - generally before /tmp is mounted, due to /tmp being on the rootfs that needs to be fscked before remount.
  
+ This could cause a regression if setupcon is run as a user who has
+ permissions to modify consoles but does not have permission to write to
+ /run.  This is a stretch, since consoles are generally expected to be
+ managed only by the root user.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: console-setup 1.108ubuntu15.4
  ProcVersionSignature: User Name 4.15.0-1029.31~16.04.1-gcp 4.15.18
  Uname: Linux 4.15.0-1029-gcp x86_64
  ApportVersion: 2.20.1-0ubuntu2.18
  Architecture: amd64
  Date: Wed Apr 10 19:24:12 2019
  PackageArchitecture: all
  ProcEnviron:
   TERM=xterm-256color
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: console-setup
  UpgradeStatus: No upgrade log present (probably fresh install)

** Description changed:

  [SRU Justification]
  I'm seeing a console-setup.service failure quite regularly in testing
  where the temp file that should have been created can't be found.
  This is a regular xenial cloud image.
  
    19:51:13 systemd-tmpfiles[485]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
    ...
    19:51:13 systemd[1]: Starting Set console font and keymap...
    19:51:15 setupcon[455]: /bin/setupcon: 809: /bin/setupcon: cannot open /tmp/tmpkbd.a8FGSs: No such file
    19:51:15 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
    19:51:15 systemd[1]: Failed to start Set console font and keymap.
    19:51:15 systemd[1]: console-setup.service: Unit entered failed state.
    19:51:15 systemd[1]: console-setup.service: Failed with result 'exit-code'.
          ...
  
  /bin/setupcon has a lovely tempfile function that looks like:
    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`
  
  Here's our edited IRC conversation on the bug:
  <@vorlon> so I do think you're being hit by the tmp cleaner
  <@vorlon> also this seems like bad pathological default behavior for
            the tmp cleaner, to delete files that have just been created
  <@vorlon> but we should fix console-setup to not rely on /tmp
  <@vorlon> and I prefer that we do that instead of trying to fiddle with
            the ordering of the systemd units on startup
  <@vorlon> i.e. console-setup has an undeclared dependency
            on systemd-tmpfiles-clean; let's remove the dependency
            instead of declaring it
  
  <@vorlon> are you failing the race more often now than in the past?
  <@rcj>    vorlon: it feels like it's failing more often but I don't have
            data to answer that.
  
  <@vorlon> are we shipping an image with a dirty rootfs?
  <@vorlon> dirty in the sense that e2fsck doesn't take one look at it,
            say "yep, nothing to do here" and exit
  <@vorlon> in the sense that this is what would make dev-sda1.device slow
            to complete AIUI
  <@rcj>    would filesystem resize on first boot mark it dirty?  Because
            that will happen
  <@vorlon> huh good question
  <@vorlon> it might
  <xnox>    rcj, unclean shutdown?
  <@rcj>    xnox: first boot
  
  [Test case]
  1. Install console-setup from -proposed
  2. Reboot
  3. Verify that `systemctl status console-setup` shows that the service has completed successfully.
  
  Since this is a race, additional fuzz testing may be warranted for the
  cloud images to confirm that the issue experienced in GCE is really
  fixed.  However, that should not block promotion of this SRU fix since
  there definitely is a race here that should be fixed per se even if
  there are other issues still causing a failure in GCE.
  
  [Regression potential]
  None known.  /run is guaranteed to be mounted rw very early in boot - generally before /tmp is mounted, due to /tmp being on the rootfs that needs to be fscked before remount.
  
- This could cause a regression if setupcon is run as a user who has
- permissions to modify consoles but does not have permission to write to
- /run.  This is a stretch, since consoles are generally expected to be
- managed only by the root user.
- 
  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: console-setup 1.108ubuntu15.4
  ProcVersionSignature: User Name 4.15.0-1029.31~16.04.1-gcp 4.15.18
  Uname: Linux 4.15.0-1029-gcp x86_64
  ApportVersion: 2.20.1-0ubuntu2.18
  Architecture: amd64
  Date: Wed Apr 10 19:24:12 2019
  PackageArchitecture: all
  ProcEnviron:
   TERM=xterm-256color
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: console-setup
  UpgradeStatus: No upgrade log present (probably fresh install)

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1824227

Title:
  console-setup failure due to race with systemd-tmpfiles

Status in console-setup package in Ubuntu:
  Fix Committed
Status in console-setup source package in Xenial:
  In Progress
Status in console-setup source package in Bionic:
  In Progress
Status in console-setup source package in Cosmic:
  In Progress
Status in console-setup source package in Disco:
  Fix Committed

Bug description:
  [SRU Justification]
  I'm seeing a console-setup.service failure quite regularly in testing
  where the temp file that should have been created can't be found.
  This is a regular xenial cloud image.

    19:51:13 systemd-tmpfiles[485]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.
    ...
    19:51:13 systemd[1]: Starting Set console font and keymap...
    19:51:15 setupcon[455]: /bin/setupcon: 809: /bin/setupcon: cannot open /tmp/tmpkbd.a8FGSs: No such file
    19:51:15 systemd[1]: console-setup.service: Main process exited, code=exited, status=1/FAILURE
    19:51:15 systemd[1]: Failed to start Set console font and keymap.
    19:51:15 systemd[1]: console-setup.service: Unit entered failed state.
    19:51:15 systemd[1]: console-setup.service: Failed with result 'exit-code'.
          ...

  /bin/setupcon has a lovely tempfile function that looks like:
    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`

  Here's our edited IRC conversation on the bug:
  <@vorlon> so I do think you're being hit by the tmp cleaner
  <@vorlon> also this seems like bad pathological default behavior for
            the tmp cleaner, to delete files that have just been created
  <@vorlon> but we should fix console-setup to not rely on /tmp
  <@vorlon> and I prefer that we do that instead of trying to fiddle with
            the ordering of the systemd units on startup
  <@vorlon> i.e. console-setup has an undeclared dependency
            on systemd-tmpfiles-clean; let's remove the dependency
            instead of declaring it

  <@vorlon> are you failing the race more often now than in the past?
  <@rcj>    vorlon: it feels like it's failing more often but I don't have
            data to answer that.

  <@vorlon> are we shipping an image with a dirty rootfs?
  <@vorlon> dirty in the sense that e2fsck doesn't take one look at it,
            say "yep, nothing to do here" and exit
  <@vorlon> in the sense that this is what would make dev-sda1.device slow
            to complete AIUI
  <@rcj>    would filesystem resize on first boot mark it dirty?  Because
            that will happen
  <@vorlon> huh good question
  <@vorlon> it might
  <xnox>    rcj, unclean shutdown?
  <@rcj>    xnox: first boot

  [Test case]
  1. Install console-setup from -proposed
  2. Reboot
  3. Verify that `systemctl status console-setup` shows that the service has completed successfully.

  Since this is a race, additional fuzz testing may be warranted for the
  cloud images to confirm that the issue experienced in GCE is really
  fixed.  However, that should not block promotion of this SRU fix since
  there definitely is a race here that should be fixed per se even if
  there are other issues still causing a failure in GCE.

  [Regression potential]
  None known.  /run is guaranteed to be mounted rw very early in boot - generally before /tmp is mounted, due to /tmp being on the rootfs that needs to be fscked before remount.

  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: console-setup 1.108ubuntu15.4
  ProcVersionSignature: User Name 4.15.0-1029.31~16.04.1-gcp 4.15.18
  Uname: Linux 4.15.0-1029-gcp x86_64
  ApportVersion: 2.20.1-0ubuntu2.18
  Architecture: amd64
  Date: Wed Apr 10 19:24:12 2019
  PackageArchitecture: all
  ProcEnviron:
   TERM=xterm-256color
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: console-setup
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/console-setup/+bug/1824227/+subscriptions