libvirt-lxc: virFileOpenTtyAt can't be called on /some/other/dev/pts
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libvirt (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Lucid |
Fix Released
|
Undecided
|
Unassigned | ||
Maverick |
Fix Released
|
Undecided
|
Unassigned | ||
Natty |
Fix Released
|
Undecided
|
Unassigned | ||
Oneiric |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
lxcControllerRun() is calling virFileOpenTtyAt() with a slave opened on /the/container/
lxcControllerRun always calls this on the first slave opened after creating the new /dev/pts, so grantpt is always checking /dev/pts/0. Therefore, if your host does not have /dev/pts/0 (easy to reproduce using screen), then grantpt will fail, and the container creation will subsequently also fail.
=======
SRU Justification:
1. Impact: libvirt will be unable to create lxc containers, saying that it cannot allocate /dev/pts/0
2. Development fix: A patch was sent upstream which makes libvirt-lxc not use glibc's grantpt, which is the cause of the bug.
3. Stable fix: same as the development fix.
4. Test case:
0. [ Set up libvirt and create a libvirt-lxc container ]
1. make sure noone is logged into the server
2. log in, make sure your tty is /dev/pts/0 (check with 'tty')
3. Pin /dev/pts/0 by doing "sleep 2h & disown; exit"
4. Try to start a container on that system. Without this fix it will fail with an error about /dev/pts/0.
5. Regression potential: if the patch was bad, it could cause failures when starting a container, or other places when libvirt allocates a tty.
=======
tags: | added: server-o-nrs |
description: | updated |
Changed in libvirt (Ubuntu Lucid): | |
status: | New → In Progress |
status: | In Progress → New |
tags: |
added: verification-done removed: verification-needed |
Changed in libvirt (Ubuntu Lucid): | |
status: | Confirmed → Fix Committed |
tags: | added: verification-done-lucid |
tags: | added: verification-done-maverick |
tags: |
added: verification-done removed: verification-done-lucid verification-done-maverick verification-done-natty |
The proposed fix - short of fixing glibc - is to set up an environment for the grantpt call with the container's /dev/pts bind-mounted to /dev/pts.