Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-3340

[leapp] Failed to read machine ID from container image: Invalid argument

Details

    • Minor
    • sst_upgrades
    • False
    • Hide

      None

      Show
      None
    • If docs needed, set a value

    Description

      Description of problem:
      If the /etc/machine-id file is not well-formed, systemd-nspawn used by leapp exits with a -1 return code, leading to the emergency shell. This is harmless as it happens very early and the system is untouched.

      Version-Release number of selected component (if applicable):
      leapp-upgrade-el7toel8-0.17.0-1.el7_9

      How reproducible:
      Always

      Steps to Reproduce:
      1. echo >> /etc/machine-id
      2. leapp upgrade

      Actual results:
      [ 2.462635] upgrade[691]: Failed to read machine ID from container image: Invalid argument
      [ 2.476214] upgrade[690]: (sd-namespace) failed with exit status 1.

      Expected results:
      Possibly an inhibitor.

      Additional info:

      • Never observed such an issue, hence very low sev. This file should not have been touched (by a human or a script).
      • Probably the same for IPU 8>9.
      • The KCS I linked could be enough.
      • Some systemd-nspawn excerpt:

      systemd-239/src/nspawn/nspawn.c:
      2187 static int setup_machine_id(const char *directory) {
      :
      2198
      2199 etc_machine_id = prefix_roota(directory, "/etc/machine-id");
      2200
      2201 r = id128_read(etc_machine_id, ID128_PLAIN, &id);
      2202 if (r < 0) {
      2203 if (!IN_SET(r, -ENOENT, -ENOMEDIUM)) /* If the file is missing or empty, we don't mind */
      2204 return log_error_errno(r, "Failed to read machine ID from container image: %m");

      systemd-239/src/libsystemd/sd-id128/id128-util.c:
      82 int id128_read_fd(int fd, Id128Format f, sd_id128_t *ret) {
      :
      102 case 33: /* plain UUID with trailing newline */
      103 if (buffer[32] != '\n')
      104 return -EINVAL;
      105
      106 fallthrough;
      107 case 32: /* plain UUID without trailing newline */
      108 if (f == ID128_UUID)
      109 return -EINVAL;
      110
      111 buffer[32] = 0;
      112 break;
      113
      114 case 37: /* RFC UUID with trailing newline */
      115 if (buffer[36] != '\n')
      116 return -EINVAL;
      117
      118 fallthrough;
      119 case 36: /* RFC UUID without trailing newline */
      120 if (f == ID128_PLAIN)
      121 return -EINVAL;

      Attachments

        Activity

          People

            leapp-notifications leapp-notifications
            rhn-support-cbesson Christophe Besson
            leapp-notifications leapp-notifications
            RHEL Upgrades QE Team RHEL Upgrades QE Team
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: