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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
vnc: 0.761
device: 0.684
instruction: 0.629
KVM: 0.601
mistranslation: 0.484
semantic: 0.415
network: 0.413
socket: 0.391
other: 0.336
boot: 0.293
graphic: 0.284
assembly: 0.073
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 ?
This is an automated cleanup. This bug report has been moved to QEMU's
new bug tracker on gitlab.com and thus gets marked as 'expired' now.
Please continue with the discussion here:
https://gitlab.com/qemu-project/qemu/-/issues/166
|