[lxc-devel] lxc-stop hangs if stopped shortly after container enters RUNNING state

Damian Eads damian.eads at gmail.com
Thu Apr 5 22:22:02 UTC 2012


Hi,

Thank you for an excellent software package. I've found lxc
exceptionally useful. I am using containers for short period to do a
small task (e.g. build some arbitrary code), and then I stop the
container. I initially tried lxc-execute but I was unable to create
outbound network connections with a mounted rootfs so I switched to
the lxc-start approach.

If I stop a container shortly after starting it, lxc-stop hangs. I use
lxc-wait to avoid stopping a container before it enters a RUNNING
state. This script reproduces the behavior:

root at domU-12-31-39-0A-16-5F:~/lxc# cat start-stop.sh
#!/bin/bash

container=$1

while $(true); do
   date '+%s:%N'
   lxc-start -n ${container} -d
   date '+%s:%N'
   lxc-wait -n ${container} -s RUNNING
   date '+%s:%N'
   sleep 1
   date '+%s:%N'
   lxc-stop -n ${container}
done

Now I will create my first test container 'test-1'.

root:~/lxc# bash /usr/local/lib/lxc/templates/lxc-ubuntu -p
/web/test-1 -n test-1
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/oneiric/rootfs-amd64 ...
Copy /var/cache/lxc/oneiric/rootfs-amd64 to /web/test-1/rootfs ...
Copying rootfs to /web/test-1/rootfs ...
Ign http://archive.ubuntu.com oneiric InRelease
Hit http://archive.ubuntu.com oneiric Release.gpg
Hit http://archive.ubuntu.com oneiric Release
Hit http://archive.ubuntu.com oneiric/main amd64 Packages
Hit http://archive.ubuntu.com oneiric/universe amd64 Packages
Get:1 http://archive.ubuntu.com oneiric/main i386 Packages [1226 kB]
Get:2 http://archive.ubuntu.com oneiric/universe i386 Packages [4468 kB]
Get:3 http://archive.ubuntu.com oneiric/main TranslationIndex [3289 B]
Get:4 http://archive.ubuntu.com oneiric/universe TranslationIndex [2640 B]
Get:5 http://archive.ubuntu.com oneiric/main Translation-en [701 kB]
Get:6 http://archive.ubuntu.com oneiric/universe Translation-en [3165 kB]
Fetched 9567 kB in 6s (1431 kB/s)
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
lxcguest is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
root at domU-12-31-39-0A-16-5F:~/lxc#

The container is then "registered" with LXC, which after inspection,
just copies the config file to
/usr/local/var/lib/lxc/<containername>/config.

root at domU-12-31-39-0A-16-5F:~/lxc# lxc-create -n test-1 -f /web/test-1/config

Now let's run the first test.

root at domU-12-31-39-0A-16-5F:~/lxc# bash -x ./start-stop.sh test-1
+ container=test-1
++ true
+ date +%s:%N
1333661238:241189772
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661238:245415477
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661238:258030034
+ sleep 1
+ date +%s:%N
1333661239:262302323
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661239:276395864
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661239:282560784
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661239:294725928
+ sleep 1
+ date +%s:%N
1333661240:301714023
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661240:312345277
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661240:318435422
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661240:331470776
+ sleep 1
+ date +%s:%N
1333661241:339849908
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661241:356360577
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661241:362475927
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661241:374076139
+ sleep 1
+ date +%s:%N
1333661242:378337747
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661242:392415859
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661242:398544530
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661242:410088590
+ sleep 1
+ date +%s:%N
1333661243:414327955
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661243:424446292
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661243:428706387
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661243:442111091
+ sleep 1
+ date +%s:%N
1333661244:446418229
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661244:461080239
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661244:465285581
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661244:478035962
+ sleep 1
+ date +%s:%N
1333661245:482147614
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661245:492484314
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661245:496658176
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661245:510172211
+ sleep 1
+ date +%s:%N
1333661246:516627373
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661246:532395635
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661246:538532475
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661246:550009291
+ sleep 1
+ date +%s:%N
1333661247:554181535
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661247:564515679
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661247:568692559
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661247:582049380
+ sleep 1
+ date +%s:%N
1333661248:586257691
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661248:596448350
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661248:602574627
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661248:614668926
+ sleep 1
+ date +%s:%N
1333661249:621787412
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661249:632586085
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661249:636819141
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661249:650090228
+ sleep 1
+ date +%s:%N
1333661250:654381329
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661250:669095601
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661250:675551830
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661250:690944072
+ sleep 1
+ date +%s:%N
1333661251:695363392
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661251:708425029
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661251:714565124
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661251:726248913
+ sleep 1
+ date +%s:%N
1333661252:730474567
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661252:745087932
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661252:749828128
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661252:765490707
+ sleep 1
+ date +%s:%N
1333661253:769653534
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661253:780325846
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661253:786521619
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661253:797919460
+ sleep 1
+ date +%s:%N
1333661254:802291608
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661254:812394220
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661254:818519687
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661254:830076881
+ sleep 1
+ date +%s:%N
1333661255:834361349
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661255:848290719
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661255:854460326
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661255:866119088
+ sleep 1
+ date +%s:%N
1333661256:870317990
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661256:888329422
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661256:894444791
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661256:906068794
+ sleep 1
+ date +%s:%N
1333661257:910208703
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661257:920443959
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661257:924658667
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661257:937996317
+ sleep 1
+ date +%s:%N
1333661258:942083212
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661258:952294814
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661258:958413625
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661258:970943910
+ sleep 1
+ date +%s:%N
1333661259:975273315
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661259:988420960
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661259:994497745
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661260:005953052
+ sleep 1
+ date +%s:%N
1333661261:463054711
+ lxc-stop -n test-1
++ true
+ date +%s:%N
1333661262:455790428
+ lxc-start -n test-1 -d
+ date +%s:%N
1333661262:465011797
+ lxc-wait -n test-1 -s RUNNING
+ date +%s:%N
1333661263:982454227
+ sleep 1
+ date +%s:%N
1333661265:001949268
+ lxc-stop -n test-1

(Hangs indefinitely here)
^C

root at domU-12-31-39-0A-16-5F:~/lxc#

It consistently hangs at lxc-stop. I create a second test container 'test-2'.

root at domU-12-31-39-0A-16-5F:~/lxc# bash
/usr/local/lib/lxc/templates/lxc-ubuntu -p /web/test-2 -n test-2
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/oneiric/rootfs-amd64 ...
Copy /var/cache/lxc/oneiric/rootfs-amd64 to /web/test-2/rootfs ...
Copying rootfs to /web/test-2/rootfs ...
root at domU-12-31-39-0A-16-5F:~/lxc# lxc-create -n test-2 -f /web/test-2/config

Next, I will change test script to do an strace on lxc-stop to
hopefully ascertain where it stops.

root at domU-12-31-39-0A-16-5F:~/lxc# cat start-stop-trace-stop.sh
#!/bin/bash

container=$1

while $(true); do
   date '+%s:%N'
   lxc-start -n ${container} -d
   date '+%s:%N'
   lxc-wait -n ${container} -s RUNNING
   date '+%s:%N'
   sleep 1
   date '+%s:%N'
   strace -- lxc-stop -n ${container}
done
root at domU-12-31-39-0A-16-5F:~/lxc# bash -x ./start-stop-trace-stop.sh test-2

...
+ date +%s:%N
1333661627:071716445
+ lxc-start -n test-2 -d
+ date +%s:%N
1333661627:076201417
+ lxc-wait -n test-2 -s RUNNING
+ date +%s:%N
1333661627:090496237
+ sleep 1
+ date +%s:%N
1333661628:597916884
+ strace -- lxc-stop -n test-2
execve("/usr/local/bin/lxc-stop", ["lxc-stop", "-n", "test-2"], [/* 19
vars */]) = 0
brk(0)                                  = 0x76f000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f48c4304000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/local/lib/tls/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/usr/local/lib/tls/x86_64", 0x7fff7360c820) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/tls/liblxc.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/usr/local/lib/tls", 0x7fff7360c820) = -1 ENOENT (No such file
or directory)
open("/usr/local/lib/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat("/usr/local/lib/x86_64", 0x7fff7360c820) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/liblxc.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340|\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=613164, ...}) = 0
mmap(NULL, 2281408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f48c3eb9000
mprotect(0x7f48c3ee1000, 2097152, PROT_NONE) = 0
mmap(0x7f48c40e1000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f48c40e1000
mmap(0x7f48c40e3000, 12224, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f48c40e3000
close(3)                                = 0
open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=20583, ...}) = 0
mmap(NULL, 20583, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f48c42fe000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
\24\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1685816, ...}) = 0
mmap(NULL, 3801960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f48c3b18000
mprotect(0x7f48c3caf000, 2093056, PROT_NONE) = 0
mmap(0x7f48c3eae000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x196000) = 0x7f48c3eae000
mmap(0x7f48c3eb3000, 21352, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f48c3eb3000
close(3)                                = 0
open("/usr/local/lib/libutil.so.1", O_RDONLY) = -1 ENOENT (No such
file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libutil.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10640, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f48c42fd000
mmap(NULL, 2105608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f48c3915000
mprotect(0x7f48c3917000, 2093056, PROT_NONE) = 0
mmap(0x7f48c3b16000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f48c3b16000
close(3)                                = 0
open("/usr/local/lib/libcap.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libcap.so.2", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=18864, ...}) = 0
mmap(NULL, 2114120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f48c3710000
mprotect(0x7f48c3714000, 2093056, PROT_NONE) = 0
mmap(0x7f48c3913000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f48c3913000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f48c42fc000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f48c42fa000
arch_prctl(ARCH_SET_FS, 0x7f48c42fa720) = 0
mprotect(0x7f48c3913000, 4096, PROT_READ) = 0
mprotect(0x7f48c3b16000, 4096, PROT_READ) = 0
mprotect(0x7f48c3eae000, 16384, PROT_READ) = 0
mprotect(0x7f48c40e1000, 4096, PROT_READ) = 0
mprotect(0x600000, 4096, PROT_READ)     = 0
mprotect(0x7f48c4306000, 4096, PROT_READ) = 0
munmap(0x7f48c42fe000, 20583)           = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
connect(3, {sa_family=AF_FILE,
path=@"/usr/local/var/lib/lxc/test-2/command"}, 110) = 0
getpid()                                = 16136
getuid()                                = 0
getgid()                                = 0
sendmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\0\0\0\0\0\0", 8}],
msg_controllen=32, {cmsg_len=28, cmsg_level=SOL_SOCKET,
cmsg_type=SCM_CREDENTIALS{pid=16136, uid=0, gid=0}}, msg_flags=0}, 0)
= 8
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\0\0\0\0\0\0\0\0\0\0\0\0",
12}], msg_controllen=0, msg_flags=0}, 0) = 0
close(3)                                = 0
exit_group(0)                           = ?
++ true
+ date +%s:%N
1333661630:101731138
+ lxc-start -n test-2 -d
+ date +%s:%N
1333661630:106364393
+ lxc-wait -n test-2 -s RUNNING
+ date +%s:%N
1333661630:118046275
+ sleep 1
+ date +%s:%N
1333661631:627115755
+ strace -- lxc-stop -n test-2
execve("/usr/local/bin/lxc-stop", ["lxc-stop", "-n", "test-2"], [/* 19
vars */]) = 0
brk(0)                                  = 0xb32000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f29b9291000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/local/lib/tls/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/usr/local/lib/tls/x86_64", 0x7fffd9124350) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/tls/liblxc.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/usr/local/lib/tls", 0x7fffd9124350) = -1 ENOENT (No such file
or directory)
open("/usr/local/lib/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat("/usr/local/lib/x86_64", 0x7fffd9124350) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/liblxc.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340|\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=613164, ...}) = 0
mmap(NULL, 2281408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f29b8e46000
mprotect(0x7f29b8e6e000, 2097152, PROT_NONE) = 0
mmap(0x7f29b906e000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f29b906e000
mmap(0x7f29b9070000, 12224, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f29b9070000
close(3)                                = 0
open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=20583, ...}) = 0
mmap(NULL, 20583, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f29b928b000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
\24\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1685816, ...}) = 0
mmap(NULL, 3801960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f29b8aa5000
mprotect(0x7f29b8c3c000, 2093056, PROT_NONE) = 0
mmap(0x7f29b8e3b000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x196000) = 0x7f29b8e3b000
mmap(0x7f29b8e40000, 21352, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f29b8e40000
close(3)                                = 0
open("/usr/local/lib/libutil.so.1", O_RDONLY) = -1 ENOENT (No such
file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libutil.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10640, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f29b928a000
mmap(NULL, 2105608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f29b88a2000
mprotect(0x7f29b88a4000, 2093056, PROT_NONE) = 0
mmap(0x7f29b8aa3000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7f29b8aa3000
close(3)                                = 0
open("/usr/local/lib/libcap.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libcap.so.2", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=18864, ...}) = 0
mmap(NULL, 2114120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f29b869d000
mprotect(0x7f29b86a1000, 2093056, PROT_NONE) = 0
mmap(0x7f29b88a0000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f29b88a0000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f29b9289000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7f29b9287000
arch_prctl(ARCH_SET_FS, 0x7f29b9287720) = 0
mprotect(0x7f29b88a0000, 4096, PROT_READ) = 0
mprotect(0x7f29b8aa3000, 4096, PROT_READ) = 0
mprotect(0x7f29b8e3b000, 16384, PROT_READ) = 0
mprotect(0x7f29b906e000, 4096, PROT_READ) = 0
mprotect(0x600000, 4096, PROT_READ)     = 0
mprotect(0x7f29b9293000, 4096, PROT_READ) = 0
munmap(0x7f29b928b000, 20583)           = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
connect(3, {sa_family=AF_FILE,
path=@"/usr/local/var/lib/lxc/test-2/command"}, 110) = 0
getpid()                                = 16154
getuid()                                = 0
getgid()                                = 0
sendmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\0\0\0\0\0\0", 8}],
msg_controllen=32, {cmsg_len=28, cmsg_level=SOL_SOCKET,
cmsg_type=SCM_CREDENTIALS{pid=16154, uid=0, gid=0}}, msg_flags=0}, 0)
= 8
recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\0\0\0\0\0\0\0\0\0\0\0\0",
12}], msg_controllen=0, msg_flags=0}, 0) = 0
close(3)                                = 0
exit_group(0)                           = ?
++ true
+ date +%s:%N
1333661632:655129828
+ lxc-start -n test-2 -d
+ date +%s:%N
1333661632:659670840
+ lxc-wait -n test-2 -s RUNNING
+ date +%s:%N
1333661634:148376934
+ sleep 1
+ date +%s:%N
1333661635:677428944
+ strace -- lxc-stop -n test-2
execve("/usr/local/bin/lxc-stop", ["lxc-stop", "-n", "test-2"], [/* 19
vars */]) = 0
brk(0)                                  = 0x1946000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7fe34bdb4000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/usr/local/lib/tls/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/usr/local/lib/tls/x86_64", 0x7fff954b0280) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/tls/liblxc.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/usr/local/lib/tls", 0x7fff954b0280) = -1 ENOENT (No such file
or directory)
open("/usr/local/lib/x86_64/liblxc.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat("/usr/local/lib/x86_64", 0x7fff954b0280) = -1 ENOENT (No such
file or directory)
open("/usr/local/lib/liblxc.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340|\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=613164, ...}) = 0
mmap(NULL, 2281408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fe34b969000
mprotect(0x7fe34b991000, 2097152, PROT_NONE) = 0
mmap(0x7fe34bb91000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7fe34bb91000
mmap(0x7fe34bb93000, 12224, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe34bb93000
close(3)                                = 0
open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=20583, ...}) = 0
mmap(NULL, 20583, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe34bdae000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0
\24\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1685816, ...}) = 0
mmap(NULL, 3801960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fe34b5c8000
mprotect(0x7fe34b75f000, 2093056, PROT_NONE) = 0
mmap(0x7fe34b95e000, 20480, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x196000) = 0x7fe34b95e000
mmap(0x7fe34b963000, 21352, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe34b963000
close(3)                                = 0
open("/usr/local/lib/libutil.so.1", O_RDONLY) = -1 ENOENT (No such
file or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libutil.so.1", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\16\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10640, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7fe34bdad000
mmap(NULL, 2105608, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fe34b3c5000
mprotect(0x7fe34b3c7000, 2093056, PROT_NONE) = 0
mmap(0x7fe34b5c6000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fe34b5c6000
close(3)                                = 0
open("/usr/local/lib/libcap.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libcap.so.2", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0\0\0\0\0\0"...,
832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=18864, ...}) = 0
mmap(NULL, 2114120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7fe34b1c0000
mprotect(0x7fe34b1c4000, 2093056, PROT_NONE) = 0
mmap(0x7fe34b3c3000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fe34b3c3000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7fe34bdac000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x7fe34bdaa000
arch_prctl(ARCH_SET_FS, 0x7fe34bdaa720) = 0
mprotect(0x7fe34b3c3000, 4096, PROT_READ) = 0
mprotect(0x7fe34b5c6000, 4096, PROT_READ) = 0
mprotect(0x7fe34b95e000, 16384, PROT_READ) = 0
mprotect(0x7fe34bb91000, 4096, PROT_READ) = 0
mprotect(0x600000, 4096, PROT_READ)     = 0
mprotect(0x7fe34bdb6000, 4096, PROT_READ) = 0
munmap(0x7fe34bdae000, 20583)           = 0
socket(PF_FILE, SOCK_STREAM, 0)         = 3
connect(3, {sa_family=AF_FILE,
path=@"/usr/local/var/lib/lxc/test-2/command"}, 110) = 0
getpid()                                = 16182
getuid()                                = 0
getgid()                                = 0
sendmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"\1\0\0\0\0\0\0\0", 8}],
msg_controllen=32, {cmsg_len=28, cmsg_level=SOL_SOCKET,
cmsg_type=SCM_CREDENTIALS{pid=16182, uid=0, gid=0}}, msg_flags=0}, 0)
= 8
recvmsg(3,

(Hangs indefinitely)
^C

The file /usr/local/var/lib/test-2/command does not exist as verified by stat.

root at domU-12-31-39-0A-16-5F:~/lxc# stat /usr/local/var/lib/lxc/test-2/command
stat: cannot stat `/usr/local/var/lib/lxc/test-2/command': No such
file or directory

I tried the second test several times, and each time, it consistently
hangs on recvmsg() after a few start-wait-sleep-stop trials. While it
may seem odd to only need a container for a short period and then stop
it, the hanging after lxc-stop seems like it may be a bug, especially
because I wait until the container enters a RUNNING state before
attempting to stop it.

Please advise.

Thank you.

Kind regards,

Damian


--
Damian Eads, PhD
http://www.damianeads.com




More information about the lxc-devel mailing list