Hi,
I grabbed today's git head of libvirt. Created a VM (clean install of
ubuntu oneiric, installed through virt-manager), and cloned it 3 times.
Then I did
serge@ubuntu:~$ for i in `seq 1 4`; do virsh start o$i > /tmp/o$i 2>&1 &
done
[1] 12184
[2] 12185
[3] 12186
[4] 12187
serge@ubuntu:~$ virsh list
error: Failed to list active domains
error: End of file while reading data: Input/output error
serge@ubuntu:~$ virsh list
Id Name State
----------------------------------------------------
5 o2 shut off
7 o3 shut off
8 o4 shut off
[1] Exit 1 virsh start o$i > /tmp/o$i 2>&1
[2] Done virsh start o$i > /tmp/o$i 2>&1
serge@ubuntu:~$ virsh list
Id Name State
----------------------------------------------------
5 o2 running
7 o3 running
8 o4 running
[3]- Done virsh start o$i > /tmp/o$i 2>&1
[4]+ Done virsh start o$i > /tmp/o$i 2>&1
serge@ubuntu:~$ cat /tmp/o1
error: Failed to start domain o1
error: Unable to wait for child process: Bad file descriptor
It's quite reproducible. An ubuntu bug report was filed at
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/961217
It's also very reminiscent of some lxc startup handshake issues
which have been fixed.
You can find the last chunk of the log file at
http://people.canonical.com/~serge/libvirtd-parallel-startup.log
-serge