Can't change virtual terminal when auto-login is enabled
When auto-login is enabled:
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=ubuntu
chvt cmd hangs sleep/wait for the specified VT has been activated:
**strace chvt 5**
execve("/bin/chvt", ["chvt", "5"], 0x7ffd326c7908 /* 20 vars */) = 0
brk(NULL) = 0x565015cf8000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=74351, ...}) = 0
mmap(NULL, 74351, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd7d4f85000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2030544, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd7d4f83000
mmap(NULL, 4131552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd7d4980000
mprotect(0x7fd7d4b67000, 2097152, PROT_NONE) = 0
mmap(0x7fd7d4d67000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7fd7d4d67000
mmap(0x7fd7d4d6d000, 15072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd7d4d6d000
close(3) = 0
arch_prctl(ARCH_SET_FS, 0x7fd7d4f84500) = 0
mprotect(0x7fd7d4d67000, 16384, PROT_READ) = 0
mprotect(0x565013feb000, 4096, PROT_READ) = 0
mprotect(0x7fd7d4f98000, 4096, PROT_READ) = 0
munmap(0x7fd7d4f85000, 74351) = 0
brk(NULL) = 0x565015cf8000
brk(0x565015d19000) = 0x565015d19000
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=10281936, ...}) = 0
mmap(NULL, 10281936, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd7d3fb1000
close(3) = 0
openat(AT_FDCWD, "/proc/self/fd/0", O_RDWR) = 3
ioctl(3, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, KDGKBTYPE, 0x7fffbe777bf7) = -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0
openat(AT_FDCWD, "/dev/tty", O_RDWR) = 3
ioctl(3, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, KDGKBTYPE, 0x7fffbe777bf7) = -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0
openat(AT_FDCWD, "/dev/tty0", O_RDWR) = 3
ioctl(3, TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, KDGKBTYPE, 0x7fffbe777bf7) = 0
ioctl(3, VT_ACTIVATE, 0x5) = 0
ioctl(3, VT_WAITACTIVE, 0x5
Enable debuglogs doesn't provide additional details. As soon as auto-login is turned off, chvt is back to normal.
The above has been reproduced on Ubuntu:
- Ubuntu Bionic w/ gdm3 3.28.3 & kbd 2.0.4
- Ubuntu disco w/ gdm3 3.30.1 & kbd 2.0.4