Bug ID 941286
Summary LXC: failed to create lock
Classification openSUSE
Product openSUSE Distribution
Version 13.2
Hardware Other
OS openSUSE 13.2
Status NEW
Severity Normal
Priority P5 - None
Component Other
Assignee bnc-team-screening@forge.provo.novell.com
Reporter christophe@osuna.org
QA Contact qa-bugs@suse.de
Found By ---
Blocker ---

LXC is no longer working since version 1.0.6-3.1. Every command fails with the
error message:

  failed to create lock


Example: try to get information from a non-existent container

With lxc-1.0.6-1.1:

  # lxc-info -n lxc_container404
  lxc_container doesn't exist

With lxc-1.0.6-3.1:

  # lxc-info -n lxc_container404
  failed to create lock
  Failure to retrieve information on /var/lib/lxc:lxc_container404

And it's the same with other commands such as lxc-start, lxc-stop...


The SPEC file was recently updated, so there might be an issue with one patch:

  * Thu Jul 23 2015 <user>@suse.com
  - Added CVE-2015-1331-lxclock-use-run-lxc-lock-rather-than-r.patch
    (bnc#938522)
  - Added CVE-2015-1334-Don-t-use-the-container-s-proc-during-.patch
    (bnc#938523)


Strace does not bring a lot of information, but we can see that directories are
created as necessary in /run/lxc.

# strace lxc-info -n lxc_container
execve("/usr/bin/lxc-info", ["lxc-info", "-n", "lxc_container"], [/* 61 vars
*/]) = 0
brk(0)                                  = 0x1901000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f1ba18ca000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=135791, ...}) = 0
mmap(NULL, 135791, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1ba18a8000
close(3)                                = 0
open("/usr/lib64/liblxc.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\371\0\0\0\0\0\0"..., 832)
= 832
fstat(3, {st_mode=S_IFREG|0755, st_size=447392, ...}) = 0
mmap(NULL, 2542456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba143e000
mprotect(0x7f1ba14a8000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba16a7000, 16384, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x69000) = 0x7f1ba16a7000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\34\2\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1974515, ...}) = 0
mmap(NULL, 3828256, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba1097000
mprotect(0x7f1ba1235000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba1434000, 24576, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19d000) = 0x7f1ba1434000
mmap(0x7f1ba143a000, 14880, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1ba143a000
close(3)                                = 0
open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\27\0\0\0\0\0\0"..., 832) =
832
fstat(3, {st_mode=S_IFREG|0755, st_size=18976, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f1ba18a7000
mmap(NULL, 2114144, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba0e92000
mprotect(0x7f1ba0e96000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba1095000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f1ba1095000
close(3)                                = 0
open("/lib64/libapparmor.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\34\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=52184, ...}) = 0
mmap(NULL, 2147312, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba0c85000
mprotect(0x7f1ba0c91000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba0e90000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7f1ba0e90000
close(3)                                = 0
open("/usr/lib64/libseccomp.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\17\1\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=150128, ...}) = 0
mmap(NULL, 2245216, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba0a60000
mprotect(0x7f1ba0a7a000, 2097152, PROT_NONE) = 0
mmap(0x7f1ba0c7a000, 45056, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f1ba0c7a000
close(3)                                = 0
open("/lib64/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\17\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14214, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f1ba18a6000
mmap(NULL, 2105624, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba085d000
mprotect(0x7f1ba085f000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba0a5e000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f1ba0a5e000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20o\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=137435, ...}) = 0
mmap(NULL, 2213008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x7f1ba0640000
mprotect(0x7f1ba0658000, 2093056, PROT_NONE) = 0
mmap(0x7f1ba0857000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f1ba0857000
mmap(0x7f1ba0859000, 13456, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f1ba0859000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f1ba18a5000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f1ba18a3000
arch_prctl(ARCH_SET_FS, 0x7f1ba18a3780) = 0
mprotect(0x7f1ba1434000, 16384, PROT_READ) = 0
mprotect(0x7f1ba0857000, 4096, PROT_READ) = 0
mprotect(0x7f1ba0a5e000, 4096, PROT_READ) = 0
mprotect(0x7f1ba0c7a000, 40960, PROT_READ) = 0
mprotect(0x7f1ba0e90000, 4096, PROT_READ) = 0
mprotect(0x7f1ba1095000, 4096, PROT_READ) = 0
mprotect(0x7f1ba16a7000, 8192, PROT_READ) = 0
mprotect(0x602000, 4096, PROT_READ)     = 0
mprotect(0x7f1ba18cb000, 4096, PROT_READ) = 0
munmap(0x7f1ba18a8000, 135791)          = 0
set_tid_address(0x7f1ba18a3a50)         = 18393
set_robust_list(0x7f1ba18a3a60, 24)     = 0
rt_sigaction(SIGRTMIN, {0x7f1ba06469f0, [], SA_RESTORER|SA_SIGINFO,
0x7f1ba064f890}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f1ba0646a80, [], SA_RESTORER|SA_RESTART|SA_SIGINFO,
0x7f1ba064f890}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
stat("/sys/kernel/security/apparmor/features/mount/mask", 0x7ffc9050c910) = -1
ENOENT (No such file or directory)
geteuid()                               = 0
brk(0)                                  = 0x1901000
brk(0x1922000)                          = 0x1922000
open("/etc/lxc/lxc.conf", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or
directory)
geteuid()                               = 0
mkdir("/", 0755)                        = -1 EEXIST (File exists)
mkdir("/run/", 0755)                    = -1 EEXIST (File exists)
mkdir("/run/lxc/", 0755)                = -1 EEXIST (File exists)
mkdir("/run/lxc/lock//", 0755)          = -1 EEXIST (File exists)
mkdir("/run/lxc/lock//var/", 0755)      = -1 EEXIST (File exists)
mkdir("/run/lxc/lock//var/lib/", 0755)  = -1 EEXIST (File exists)
mkdir("/run/lxc/lock//var/lib/lxc", 0755) = -1 EEXIST (File exists)
write(2, "failed to create lock\n", 22failed to create lock
) = 22
write(2, "Failure to retrieve information "..., 62Failure to retrieve
information on /var/lib/lxc:lxc_container
) = 62
exit_group(1)                           = ?
+++ exited with 1 +++

If I remove the directory /run/lxc/lock the directory is created again and I
still face the error message.


Workaround: revert to older package 1.0.6-1.1


You are receiving this mail because: