hyperhq / runv

Hypervisor-based Runtime for OCI
Apache License 2.0
828 stars 129 forks source link

runv proxy is not shutdown properly #551

Closed bergwolf closed 7 years ago

bergwolf commented 7 years ago

When container exits, both runv-shim and containerd-shim exit but runv proxy and qemu process are still running.

Before container exits:

[hypervsock@runv]$pa|grep runv
root      58136  0.3  0.5 279924 19004 ?        Ssl  20:34   0:00 runv --root /run/containerd/runc/default --debug --log_dir /var/log/hyper proxy --vmid vm-FculwSDYCv --hyperstart-ctl-sock unix:///var/run/hyper/vm-FculwSDYCv/hyper.sock --hyperstart-stream-sock unix:///var/run/hyper/vm-FculwSDYCv/tty.sock --proxy-hyperstart /var/run/hyper/vm-FculwSDYCv/hyperstartgrpc.sock --watch-vm-console /var/run/hyper/vm-FculwSDYCv/console.sock --watch-hyperstart
root      58154  0.0  0.4 360796 18064 pts/11   Ssl+ 20:34   0:00 runv --root /run/containerd/runc/default --log_dir /var/log/hyper/shim-foobar10 --debug shim --container foobar10 --process init --proxy-stdio --proxy-exit-code --proxy-signal --proxy-winsize

After container exits:

[hypervsock@runv]$pa|grep runv
root      58136  0.3  0.5 279924 19312 ?        Ssl  20:34   0:00 runv --root /run/containerd/runc/default --debug --log_dir /var/log/hyper proxy --vmid vm-FculwSDYCv --hyperstart-ctl-sock unix:///var/run/hyper/vm-FculwSDYCv/hyper.sock --hyperstart-stream-sock unix:///var/run/hyper/vm-FculwSDYCv/tty.sock --proxy-hyperstart /var/run/hyper/vm-FculwSDYCv/hyperstartgrpc.sock --watch-vm-console /var/run/hyper/vm-FculwSDYCv/console.sock --watch-hyperstart
[hypervsock@runv]$pa|grep qemu
root      58145  1.7  3.9 459108 149252 ?       Sl   20:34   0:04 /bin/qemu-system-x86_64 -machine pc-i440fx-2.1,accel=kvm,usb=off -global kvm-pit.lost_tick_policy=discard -cpu host -bios /var/lib/hyper/bios.bin -kernel /var/lib/hyper/kernel -initrd /var/lib/hyper/hyper-initrd.img -append console=ttyS0 panic=1 no_timer_check -realtime mlock=off -no-user-config -nodefaults -no-hpet -rtc base=utc,clock=vm,driftfix=slew -no-reboot -display none -boot strict=on -m size=128,slots=1,maxmem=32768M -smp cpus=1,maxcpus=8 -numa node,nodeid=0,cpus=0-7,mem=128 -qmp unix:/var/run/hyper/vm-FculwSDYCv/qmp.sock,server,nowait -serial unix:/var/run/hyper/vm-FculwSDYCv/console.sock,server,nowait -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x2 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 -chardev socket,id=charch0,path=/var/run/hyper/vm-FculwSDYCv/hyper.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charch0,id=channel0,name=sh.hyper.channel.0 -chardev socket,id=charch1,path=/var/run/hyper/vm-FculwSDYCv/tty.sock,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charch1,id=channel1,name=sh.hyper.channel.1 -fsdev local,id=virtio9p,path=/var/run/hyper/vm-FculwSDYCv/share_dir,security_model=none -device virtio-9p-pci,fsdev=virtio9p,mount_tag=share_dir -daemonize -pidfile /var/run/hyper/vm-FculwSDYCv/pidfile -D /var/log/hyper/qemu/vm-FculwSDYC.log

runv delete looks to be called according to containerd code path. There is /tasks/delete event which should end up calling runtime delete method.

Need further investigation.

bergwolf commented 7 years ago

The issue goes away after updating containerd to latest master (https://github.com/containerd/containerd/commit/cf1b59348).