** Description changed:

+ [ Impact ]
+ 
+ When the bug is present, the default console for a running container, normally
+ reachable via the `lxc-console` command on the host, is not available.
+ The command executes, user input is echoed back, but there is no login prompt
+ or any other response from the containerised system.
+ 
+ On systemd-based containers, the `container_ttys` environment variable, passed
+ to container's init process, is used to determine which additional ttys to
+ spawn getty on. This variable was originally correctly set by LXC, but then
+ regressed twice: in 4.0.11 and 5.0.1. When this environment variable is empty
+ or missing, getty is only spawned on `/dev/console`, leading to broken
+ `lxc-console`.
+ 
+ We have an automated test environment where LXC containers are used. These
+ containers are controlled via `lxc-console`. Our automation broke when we
+ upgraded our container host to Noble, `lxc-console` became unresponsive as
+ described above.
+ 
+ Our original workaround was to use `/dev/console` (`lxc-console -t 0`). This
+ worked partially, but resulted in chunks of output missing when the output 
size
+ was large, hence this not being an acceptable workaround. Another workaround
+ was to manually set the `container_ttys` environment variable. This wasn't
+ stable enough, as tty names would change between different container hosts.
+ 
+ In my opinion, this is a reasonable SRU candidate:
+ 
+ * Regression, breaks expected behaviour.
+ * No acceptable workaround.
+ * Small size of the change.
+ * Limited scope of the change: sets an environment variable for the init
+   process, only respected by systemd containers, others ignore it.
+ 
+ 
+ [ Test Plan ]
+ 
+ 1. Install the affected packages (`lxc`) along with the container OS templates
+   (`lxc-templates`):
+ 
+     $ sudo apt update && sudo apt install lxc lxc-templates
+ 
+   On Focal this will transitively install `lxc-utils`. Noble and newer use
+   `lxc` directly.
+ 
+ 2. Create a test container based on Focal:
+ 
+     $ sudo lxc-create -n test-focal -t /usr/share/lxc/templates/lxc-
+ ubuntu -- -r focal
+ 
+ 3. Start the newly created container and ensure it's in `RUNNING` state:
+ 
+     $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
+ focal
+ 
+ 4. View the environment variables passed to container's init process:
+ 
+     $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
+ /proc/1/environ'
+ 
+   Note that the `container_ttys` environment variable is either empty or
+   missing altogether, indicating that the bug is present.
+ 
+ 5. Attach to container's default console and, once attached, press Enter a few
+   times:
+ 
+     $ sudo lxc-console -n test-focal
+ 
+   Observe that, while input is accepted, no login prompt appears. This 
confirms
+   the presence of the bug. Press Ctrl+a q to close the console session.
+ 
+ 6. Stop the running container and ensure that it's in the `STOPPED`
+ state:
+ 
+     $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-ls -f test-
+ focal
+ 
+ 7. Add the PPA that includes the applied fixes:
+ 
+     $ sudo add-apt-repository ppa:rocko/lp2109890-lxc-container-ttys &&
+ sudo apt update
+ 
+   Later in the SRU process, instead of the PPA above, enable the -proposed
+   pocket as described here: https://wiki.ubuntu.com/Testing/EnableProposed
+ 
+ 8. Install the patched packages:
+ 
+     $ sudo apt install lxc
+ 
+   `lxc-templates` comes from a different source package and is not
+ affected.
+ 
+ 9. Start the container again and ensure it is in the `RUNNING` state:
+ 
+     $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
+ focal
+ 
+ 10. View the environment variables passed to container's init process:
+ 
+     $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
+ /proc/1/environ'
+ 
+   Observe that `container_ttys` is now set, indicating that the bug is fixed,
+   and contains 4 pts entries, which is the LXC default.
+ 
+ 11. Attach to container's default console:
+ 
+     $ sudo lxc-console -n test-focal
+ 
+ 12. A login prompt should appear. If not, press Enter, and you should get the
+   prompt. Log in with user `ubuntu` and password `ubuntu`. The console is
+   responsive, this confirms the bug is fixed.
+ 
+ 13. Interact with the console for at least 15 seconds. You can execute
+   arbitrary commands like `uname`, `date` etc. This is to make sure that no
+   other getty instance is trying to take over the same tty. In case of such an
+   interruption one would be kicked back out to the login prompt, which is a
+   negative result.
+ 
+ 14. Exit the container's shell session and detach from the console:
+ 
+     container$ exit
+ 
+     Ctrl+a q
+ 
+ 15. Attach to container's `/dev/console`:
+ 
+     $ sudo lxc-console -n test-focal -t 0
+ 
+ 16. Repeat steps 12-14.
+ 
+ 17. Stop the running container and ensure that it is in the `STOPPED`
+ state:
+ 
+     $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-ls -f test-
+ focal
+ 
+ 18. Configure a custom number of allocated ttys for the container:
+ 
+     $ echo 'lxc.tty.max = 2' | sudo tee -a /var/lib/lxc/test-
+ focal/config
+ 
+ 19. Start the container again and ensure that it is in the `RUNNING`
+ state:
+ 
+     $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
+ focal
+ 
+ 20. View the environment variables passed to container's init process:
+ 
+     $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
+ /proc/1/environ'
+ 
+   Observe that `container_ttys` is still defined, and now has 2 pts entries
+   instead of 4.
+ 
+ 21. Clean up:
+ 
+     $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-destroy -n
+ test-focal
+ 
+ 
+ [ Where problems could occur ]
+ 
+ * Containers could fail to start altogether.
+ * `container_ttys` may remain unset, empty, or otherwise contain an invalid
+   value. This regression happened twice in the LXC project, and there were 
very
+   few reports of this problem. The result is the bug would still be there.
+ * Incorrect or conflicting ttys could end up in `container_ttys`. This 
happened
+   when trying to manually set `container_ttys` as a workaround, and the pts
+   indices differed between two container hosts. The result was two gettys
+   fighting for the same tty, kicking each other out. This could also result in
+   systemd trying again and again to spawn getty on ttys that don't exist.
+ * An incorrect number of allocated ttys ends up in `container_ttys`. Must
+   correspond to either `lxc.tty.max` or, if unspecified, the default value
+   of 4. Similar side effects as the previous point.
+ * Increased memory usage of newly started containers after `lxc` package
+   upgrade. systemd-based containers will spawn one additional getty instance
+   per tty specified in `container_ttys`. On noble arm64 host, Focal arm64
+   container, each `agetty` process reports RSS of 1792 kB. This could be of
+   importance for hosts with constrained available memory.
+ 
+ This bugfix does not make any persistent configuration changes. In case of a
+ new regression, it will be enough to revert the fix and to restart the 
affected
+ containers.
+ 
+ 
+ [ Other info ]
+ 
+ Note that the patch for Focal is different compared to the other affected
+ releases, but they both fix the same problem.
+ 
+ Focal regressed in -updates, the package version in the release pocket is
+ unaffected.
+ 
+ Noble, Oracular, Plucky and Questing are affected in all pockets as of
+ writing.
+ 
+ LXC project hasn't yet made a release with the newer of the two fixes as of
+ writing.
+ 
+ 
+ [ Original description ]
+ 
  In Ubuntu 20.04, 24.04 and newer, containers started with affected 
lxc/lxc-utils
  are not provided with a valid `container_ttys` environment variable, resulting
  in non-functioning console when called via `lxc-console`. Upstream fixes are
  available, and should be backported to stable Ubuntu releases.
  
- 
  ## Steps to reproduce
  
  Create and start an Ubuntu focal container:
  
-       # apt update && apt install lxc-utils lxc-templates
-       # lxc-create -n test-focal -t /usr/share/lxc/templates/lxc-ubuntu -- 
--release focal
-       # lxc-start test-focal
+  # apt update && apt install lxc-utils lxc-templates
+  # lxc-create -n test-focal -t /usr/share/lxc/templates/lxc-ubuntu -- 
--release focal
+  # lxc-start test-focal
  
  View the environment variables of the init process inside the container:
  
-       # lxc-attach test-focal -- bash -c "tr '\0' '\n' </proc/1/environ"
-       ...
+  # lxc-attach test-focal -- bash -c "tr '\0' '\n' </proc/1/environ"
+  ...
  
  Try attaching to the default console of the container:
  
-       # lxc-console test-focal
-       ...
+  # lxc-console test-focal
+  ...
  
  The issue is not specific to a particular distribution of version of the
  container. What is important is that the container uses `container_ttys`
  environment variable to spawn gettys on them. This is done by systemd, see 
[1].
  
- 
  ## Expected results
  
  1. `/proc/1/environ` within the container includes the `container_ttys`
- environment variable with a list of virtual consoles:
- 
-       container=lxc
-       container_ttys=pts/1 pts/2 pts/3 pts/4
+ environment variable with a list of ttys:
+ 
+  container=lxc
+  container_ttys=pts/1 pts/2 pts/3 pts/4
  
  2. `lxc-console test-focal` without any special arguments results in a working
  console:
  
-       # lxc-console test-focal
-       
-       Connected to tty 1
-       Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a 
itself
-       
-       Ubuntu 20.04.6 LTS test-focal pts/1
-       
-       test-focal login:
- 
+  # lxc-console test-focal
+ 
+  Connected to tty 1
+  Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
+ 
+  Ubuntu 20.04.6 LTS test-focal pts/1
+ 
+  test-focal login:
  
  ## Actual results
  
  1. `/proc/1/environ` either has an empty `container_ttys`, or it's not defined
  at all:
  
  On Ubuntu 20.04:
  
-       container=lxc
-       container_ttys=
+  container=lxc
+  container_ttys=
  
  On Ubuntu 24.04 and newer:
  
-         container=lxc
+  container=lxc
  
  2. `lxc-console test-focal` without any special arguments results in an empty,
  non-functional console:
  
-         # lxc-console test-focal
- 
-       Connected to tty 1
-       Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a 
itself
-       <nothing>
- 
+  # lxc-console test-focal
+ 
+  Connected to tty 1
+  Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
+  <nothing>
  
  ## Affected versions
  
  Upstream:
  * LXC 4.0.11 and 4.0.12
-       Bug report: https://github.com/lxc/lxc/issues/4088
-       Fixed in: https://github.com/lxc/lxc/pull/4089
+  Bug report: https://github.com/lxc/lxc/issues/4088
+  Fixed in: https://github.com/lxc/lxc/pull/4089
  * LXC 5.0.1 and newer
-       Bug report: https://github.com/lxc/lxc/issues/4198
-       Fixed in: https://github.com/lxc/lxc/pull/4544
+  Bug report: https://github.com/lxc/lxc/issues/4198
+  Fixed in: https://github.com/lxc/lxc/pull/4544
  
  Ubuntu:
  * 20.04
-       * `1:4.0.12-0ubuntu1~20.04.1` in `updates`
+  * `1:4.0.12-0ubuntu1~20.04.1` in `updates`
  * 24.04
-       * `1:5.0.3-2ubuntu7` in `release`
-       * `1:5.0.3-2ubuntu7.1` in `updates`
+  * `1:5.0.3-2ubuntu7` in `release`
+  * `1:5.0.3-2ubuntu7.1` in `updates`
  * 24.10
-       * `1:6.0.1-1ubuntu1` in `release`
-       * `1:6.0.1-1ubuntu1.1` in `updates`
+  * `1:6.0.1-1ubuntu1` in `release`
+  * `1:6.0.1-1ubuntu1.1` in `updates`
  * 25.04
-       * `1:6.0.3-1` in `release`
+  * `1:6.0.3-1` in `release`
  * 25.10
-       * `1:6.0.3-1` in `release`
-       * `1:6.0.4-2` in `proposed`
+  * `1:6.0.3-1` in `release`
+  * `1:6.0.4-2` in `proposed`
  
  Packages in 20.04 `release`, 22.04 are unaffected.
- 
  
  ## Patches
  
  Attached patches are taken as-is from pull requests mentioned in the
  "Affected versions" section.
  
  * For Ubuntu 20.04: `3b9f84fd2397d06782bbf67dc8421463c43ab139.patch`
-       This has been tested applied on top of `1:4.0.12-0ubuntu1~20.04.1` and 
is
-       working.
+  This has been tested applied on top of `1:4.0.12-0ubuntu1~20.04.1` and is
+  working.
  * For Ubuntu 24.04 and newer: `0636ec66b950dd42342fc937cbba97365e92f01e.patch`
-       This has been tested applied on top of `1:5.0.3-2ubuntu7.1` and is 
working.
- 
+  This has been tested applied on top of `1:5.0.3-2ubuntu7.1` and is working.
  
  ## Workarounds
  It is possible to define the `container_ttys` environment variable manually
  in the container configuration file, or in host-wide LXC configuration,
  for example:
  
-         lxc.environment = container_ttys=/dev/pts/1 /dev/pts/2
- /dev/pts/3 /dev/pts/4
+  lxc.environment = container_ttys=/dev/pts/1 /dev/pts/2 /dev/pts/3
+ /dev/pts/4
  
  This approach is fragile however, as the allocated device names can vary from
  host to host, and also depend on the `lxc.tty.max` value (default is `4`).
  
  Additionally it is possible to use `/dev/console` by specifying `-t 0`:
  
-         lxc-console -t 0 <container_name>
+  lxc-console -t 0 <container_name>
  
  which is available regardless of `container_ttys`.
- 
  
  ## Motivation
  
  We use LXC in an automated test environment, where `lxc-console` is used for
  interacting with running containers. This functionality broke for us when we
  upgraded our container host to Ubuntu 24.04.
  
  Our original workaround was to use `/dev/console` by specifying `-t 0`. This
  turned out to be problematic. We observed that, on large output, chunks of 
data
  were missing, as the console couldn't keep up. This does not happen with
- normally allocated virtual consoles.
+ ttys allocated for virtual consoles.
  
  We're currently manually specifying the `container_ttys` environment variable
  host-wide, but this is a fragile workaround, we'd like to have a proper fix 
for
  this.
  
  I believe the scope of the attached patches is limited, and they restore
  expected behaviour, thus they should be applied to packages in existing stable
  Ubuntu releases.
  
- 
- [1]: 
https://github.com/systemd/systemd/blob/5e6dd20a6e217674f53f738f9fc84dbbf4506a63/docs/CONTAINER_INTERFACE.md#environment-variables
+ [1]:
+ 
https://github.com/systemd/systemd/blob/5e6dd20a6e217674f53f738f9fc84dbbf4506a63/docs/CONTAINER_INTERFACE.md#environment-
+ variables

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to lxc in Ubuntu.
https://bugs.launchpad.net/bugs/2109890

Title:
  lxc: container_ttys env var not populated, leading to broken lxc-
  console

Status in lxc package in Ubuntu:
  New

Bug description:
  [ Impact ]

  When the bug is present, the default console for a running container, normally
  reachable via the `lxc-console` command on the host, is not available.
  The command executes, user input is echoed back, but there is no login prompt
  or any other response from the containerised system.

  On systemd-based containers, the `container_ttys` environment variable, passed
  to container's init process, is used to determine which additional ttys to
  spawn getty on. This variable was originally correctly set by LXC, but then
  regressed twice: in 4.0.11 and 5.0.1. When this environment variable is empty
  or missing, getty is only spawned on `/dev/console`, leading to broken
  `lxc-console`.

  We have an automated test environment where LXC containers are used. These
  containers are controlled via `lxc-console`. Our automation broke when we
  upgraded our container host to Noble, `lxc-console` became unresponsive as
  described above.

  Our original workaround was to use `/dev/console` (`lxc-console -t 0`). This
  worked partially, but resulted in chunks of output missing when the output 
size
  was large, hence this not being an acceptable workaround. Another workaround
  was to manually set the `container_ttys` environment variable. This wasn't
  stable enough, as tty names would change between different container hosts.

  In my opinion, this is a reasonable SRU candidate:

  * Regression, breaks expected behaviour.
  * No acceptable workaround.
  * Small size of the change.
  * Limited scope of the change: sets an environment variable for the init
    process, only respected by systemd containers, others ignore it.

  
  [ Test Plan ]

  1. Install the affected packages (`lxc`) along with the container OS templates
    (`lxc-templates`):

      $ sudo apt update && sudo apt install lxc lxc-templates

    On Focal this will transitively install `lxc-utils`. Noble and newer use
    `lxc` directly.

  2. Create a test container based on Focal:

      $ sudo lxc-create -n test-focal -t /usr/share/lxc/templates/lxc-
  ubuntu -- -r focal

  3. Start the newly created container and ensure it's in `RUNNING`
  state:

      $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
  focal

  4. View the environment variables passed to container's init process:

      $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
  /proc/1/environ'

    Note that the `container_ttys` environment variable is either empty or
    missing altogether, indicating that the bug is present.

  5. Attach to container's default console and, once attached, press Enter a few
    times:

      $ sudo lxc-console -n test-focal

    Observe that, while input is accepted, no login prompt appears. This 
confirms
    the presence of the bug. Press Ctrl+a q to close the console session.

  6. Stop the running container and ensure that it's in the `STOPPED`
  state:

      $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-ls -f test-
  focal

  7. Add the PPA that includes the applied fixes:

      $ sudo add-apt-repository ppa:rocko/lp2109890-lxc-container-ttys
  && sudo apt update

    Later in the SRU process, instead of the PPA above, enable the -proposed
    pocket as described here: https://wiki.ubuntu.com/Testing/EnableProposed

  8. Install the patched packages:

      $ sudo apt install lxc

    `lxc-templates` comes from a different source package and is not
  affected.

  9. Start the container again and ensure it is in the `RUNNING` state:

      $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
  focal

  10. View the environment variables passed to container's init process:

      $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
  /proc/1/environ'

    Observe that `container_ttys` is now set, indicating that the bug is fixed,
    and contains 4 pts entries, which is the LXC default.

  11. Attach to container's default console:

      $ sudo lxc-console -n test-focal

  12. A login prompt should appear. If not, press Enter, and you should get the
    prompt. Log in with user `ubuntu` and password `ubuntu`. The console is
    responsive, this confirms the bug is fixed.

  13. Interact with the console for at least 15 seconds. You can execute
    arbitrary commands like `uname`, `date` etc. This is to make sure that no
    other getty instance is trying to take over the same tty. In case of such an
    interruption one would be kicked back out to the login prompt, which is a
    negative result.

  14. Exit the container's shell session and detach from the console:

      container$ exit

      Ctrl+a q

  15. Attach to container's `/dev/console`:

      $ sudo lxc-console -n test-focal -t 0

  16. Repeat steps 12-14.

  17. Stop the running container and ensure that it is in the `STOPPED`
  state:

      $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-ls -f test-
  focal

  18. Configure a custom number of allocated ttys for the container:

      $ echo 'lxc.tty.max = 2' | sudo tee -a /var/lib/lxc/test-
  focal/config

  19. Start the container again and ensure that it is in the `RUNNING`
  state:

      $ sudo lxc-start -n test-focal && sleep 1 && sudo lxc-ls -f test-
  focal

  20. View the environment variables passed to container's init process:

      $ sudo lxc-attach -n test-focal -- sh -c 'tr "\0" "\n" <
  /proc/1/environ'

    Observe that `container_ttys` is still defined, and now has 2 pts entries
    instead of 4.

  21. Clean up:

      $ sudo lxc-stop -n test-focal && sleep 1 && sudo lxc-destroy -n
  test-focal

  
  [ Where problems could occur ]

  * Containers could fail to start altogether.
  * `container_ttys` may remain unset, empty, or otherwise contain an invalid
    value. This regression happened twice in the LXC project, and there were 
very
    few reports of this problem. The result is the bug would still be there.
  * Incorrect or conflicting ttys could end up in `container_ttys`. This 
happened
    when trying to manually set `container_ttys` as a workaround, and the pts
    indices differed between two container hosts. The result was two gettys
    fighting for the same tty, kicking each other out. This could also result in
    systemd trying again and again to spawn getty on ttys that don't exist.
  * An incorrect number of allocated ttys ends up in `container_ttys`. Must
    correspond to either `lxc.tty.max` or, if unspecified, the default value
    of 4. Similar side effects as the previous point.
  * Increased memory usage of newly started containers after `lxc` package
    upgrade. systemd-based containers will spawn one additional getty instance
    per tty specified in `container_ttys`. On noble arm64 host, Focal arm64
    container, each `agetty` process reports RSS of 1792 kB. This could be of
    importance for hosts with constrained available memory.

  This bugfix does not make any persistent configuration changes. In case of a
  new regression, it will be enough to revert the fix and to restart the 
affected
  containers.

  
  [ Other info ]

  Note that the patch for Focal is different compared to the other affected
  releases, but they both fix the same problem.

  Focal regressed in -updates, the package version in the release pocket is
  unaffected.

  Noble, Oracular, Plucky and Questing are affected in all pockets as of
  writing.

  LXC project hasn't yet made a release with the newer of the two fixes as of
  writing.

  
  [ Original description ]

  In Ubuntu 20.04, 24.04 and newer, containers started with affected 
lxc/lxc-utils
  are not provided with a valid `container_ttys` environment variable, resulting
  in non-functioning console when called via `lxc-console`. Upstream fixes are
  available, and should be backported to stable Ubuntu releases.

  ## Steps to reproduce

  Create and start an Ubuntu focal container:

   # apt update && apt install lxc-utils lxc-templates
   # lxc-create -n test-focal -t /usr/share/lxc/templates/lxc-ubuntu -- 
--release focal
   # lxc-start test-focal

  View the environment variables of the init process inside the
  container:

   # lxc-attach test-focal -- bash -c "tr '\0' '\n' </proc/1/environ"
   ...

  Try attaching to the default console of the container:

   # lxc-console test-focal
   ...

  The issue is not specific to a particular distribution of version of the
  container. What is important is that the container uses `container_ttys`
  environment variable to spawn gettys on them. This is done by systemd, see 
[1].

  ## Expected results

  1. `/proc/1/environ` within the container includes the `container_ttys`
  environment variable with a list of ttys:

   container=lxc
   container_ttys=pts/1 pts/2 pts/3 pts/4

  2. `lxc-console test-focal` without any special arguments results in a working
  console:

   # lxc-console test-focal

   Connected to tty 1
   Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

   Ubuntu 20.04.6 LTS test-focal pts/1

   test-focal login:

  ## Actual results

  1. `/proc/1/environ` either has an empty `container_ttys`, or it's not defined
  at all:

  On Ubuntu 20.04:

   container=lxc
   container_ttys=

  On Ubuntu 24.04 and newer:

   container=lxc

  2. `lxc-console test-focal` without any special arguments results in an empty,
  non-functional console:

   # lxc-console test-focal

   Connected to tty 1
   Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
   <nothing>

  ## Affected versions

  Upstream:
  * LXC 4.0.11 and 4.0.12
   Bug report: https://github.com/lxc/lxc/issues/4088
   Fixed in: https://github.com/lxc/lxc/pull/4089
  * LXC 5.0.1 and newer
   Bug report: https://github.com/lxc/lxc/issues/4198
   Fixed in: https://github.com/lxc/lxc/pull/4544

  Ubuntu:
  * 20.04
   * `1:4.0.12-0ubuntu1~20.04.1` in `updates`
  * 24.04
   * `1:5.0.3-2ubuntu7` in `release`
   * `1:5.0.3-2ubuntu7.1` in `updates`
  * 24.10
   * `1:6.0.1-1ubuntu1` in `release`
   * `1:6.0.1-1ubuntu1.1` in `updates`
  * 25.04
   * `1:6.0.3-1` in `release`
  * 25.10
   * `1:6.0.3-1` in `release`
   * `1:6.0.4-2` in `proposed`

  Packages in 20.04 `release`, 22.04 are unaffected.

  ## Patches

  Attached patches are taken as-is from pull requests mentioned in the
  "Affected versions" section.

  * For Ubuntu 20.04: `3b9f84fd2397d06782bbf67dc8421463c43ab139.patch`
   This has been tested applied on top of `1:4.0.12-0ubuntu1~20.04.1` and is
   working.
  * For Ubuntu 24.04 and newer: `0636ec66b950dd42342fc937cbba97365e92f01e.patch`
   This has been tested applied on top of `1:5.0.3-2ubuntu7.1` and is working.

  ## Workarounds
  It is possible to define the `container_ttys` environment variable manually
  in the container configuration file, or in host-wide LXC configuration,
  for example:

   lxc.environment = container_ttys=/dev/pts/1 /dev/pts/2 /dev/pts/3
  /dev/pts/4

  This approach is fragile however, as the allocated device names can vary from
  host to host, and also depend on the `lxc.tty.max` value (default is `4`).

  Additionally it is possible to use `/dev/console` by specifying `-t
  0`:

   lxc-console -t 0 <container_name>

  which is available regardless of `container_ttys`.

  ## Motivation

  We use LXC in an automated test environment, where `lxc-console` is used for
  interacting with running containers. This functionality broke for us when we
  upgraded our container host to Ubuntu 24.04.

  Our original workaround was to use `/dev/console` by specifying `-t 0`. This
  turned out to be problematic. We observed that, on large output, chunks of 
data
  were missing, as the console couldn't keep up. This does not happen with
  ttys allocated for virtual consoles.

  We're currently manually specifying the `container_ttys` environment variable
  host-wide, but this is a fragile workaround, we'd like to have a proper fix 
for
  this.

  I believe the scope of the attached patches is limited, and they restore
  expected behaviour, thus they should be applied to packages in existing stable
  Ubuntu releases.

  [1]:
  
https://github.com/systemd/systemd/blob/5e6dd20a6e217674f53f738f9fc84dbbf4506a63/docs/CONTAINER_INTERFACE.md#environment-
  variables

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/2109890/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to