1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
qemu-bridge-helper failure but qemu not exit
When qemu-bridge-helper run failed, its parent process qemu is still alive.
This is my command line:
qemu-system-x86_64 -curses -enable-kvm -cpu host -smp 4 -m 4096 \
-vnc :1 \
-kernel /data/xugang_vms/boot/vmlinuz \
-initrd /data/xugang_vms/boot/initram \
-append 'module_blacklist=drm,evbug net.ifnames=0 biosdevname=0 ROOTDEV=rootfs' \
-drive file=/data/xugang_vms/instances/vn7/rootfs.img,format=qcow2,if=virtio \
-monitor unix:/data/xugang_vms/var/monitor/vn7.sock,server,nowait \
-netdev bridge,br=vmbr99,helper="/root/bridgehelper --ns=kvm_1 ",id=n1 -device virtio-net,netdev=n1,mac=92:99:98:76:01:07
"/root/bridgehelper" is self defined helper binary by me. But after bridge-helper exited with failure(not send fd to qemu process yet), the linux vm's console will be messed up. I checked the qemu source code(at net/tap.c) and found following snip:
===>
do {
fd = recv_fd(sv[0]);
} while (fd == -1 && errno == EINTR);
saved_errno = errno;
close(sv[0]);
while (waitpid(pid, &status, 0) != pid) {
/* loop */
}
<=========
why recv_fd will infinitely wait for recv? Maybe it shall waitpid and then recv_fd ?
|