Bug 616695

Summary: [qemu] [rhel6] dead lock in qemu: /usr/libexec/qemu-kvm: corrupted double-linked list: 0x00007fa3300637f0 ***
Product: Red Hat Enterprise Linux 6 Reporter: Haim <hateya>
Component: qemu-kvmAssignee: Marcelo Tosatti <mtosatti>
Status: CLOSED WORKSFORME QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: low    
Version: 6.1CC: abaron, danken, gcosta, hateya, kcao, mgoldboi, mkenneth, tburke, virt-maint, yeylon
Target Milestone: rcKeywords: RHELNAK
Target Release: 6.2   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-04-27 08:02:29 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 580953, 682015    

Description Haim 2010-07-21 08:30:28 UTC
Description of problem:

hit a deadlock in qemu which caused by probably memory corruption; as seen in the following log. 

*** glibc detected *** /usr/libexec/qemu-kvm: corrupted double-linked list: 0x00007fa3300637f0 ***

attached also qemu command: 

LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -S -M rhel6.0.0 -cpu qemu64,-svm -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name libvirt-rhel54-124 -uuid 31e431e2-aaf3-42af-b121-0c2ff9b2b227 -nodefconfig -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/libvirt-rhel54-124.monitor,server,nowait -mon chardev=monitor,mode=control -rtc base=2010-6-20T2:24:30 -boot c -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x7 -drive file=/rhev/data-center/841af73a-d3bf-4bb8-9985-0603fdcf302e/aaac4a9b-ae1f-4e4b-9c71-d25eb10bc83f/images/ada6e83b-572c-4042-938f-82ac472384b9/3b84ff9a-a2d5-4e2c-a35e-049da8a1c4cc,if=none,id=drive-virtio-disk0,boot=on,format=qcow2,serial=42-938f-82ac472384b9,cache=none -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=/rhev/data-center/841af73a-d3bf-4bb8-9985-0603fdcf302e/aaac4a9b-ae1f-4e4b-9c71-d25eb10bc83f/images/7b387531-0939-4309-b005-a12992ba141a/c40b94b9-a07a-497e-be3c-e6034ba8dab8,if=none,id=drive-virtio-disk1,format=qcow2,serial=09-b005-a12992ba141a,cache=none -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1 -netdev tap,fd=22,id=hostnet0,vhost=on,vhostfd=36 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=00:1a:4a:23:71:8f,bus=pci.0,addr=0x6 -chardev socket,id=channel0,path=/var/lib/libvirt/qemu/channels/libvirt-rhel54-124.org.linux-kvm.port.0,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=0,chardev=channel0,name=org.linux-kvm.port.0 -usb -device usb-tablet,id=input0 -vnc 0:13,password -k en-us -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3

it's a bit problem to reproduce, it happened to me when I load server with 60 vms and then killed all of thier qemu process (using rhevm). 
it happened on 2 servers so far. 

showed it to gleb and he said its a qumu bug. 


(gdb) info threads
  2 Thread 0x7fa336b29710 (LWP 10784)  __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:97
* 1 Thread 0x7fa33712e800 (LWP 10763)  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136


#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x0000003ceb609345 in _L_lock_868 () from /lib64/libpthread.so.0
#2  0x0000003ceb609217 in __pthread_mutex_lock (mutex=0x866c20) at pthread_mutex_lock.c:61
#3  0x0000000000427efe in kvm_mutex_lock () at /usr/src/debug/qemu-kvm-0.12.1.2/qemu-kvm.c:2533
#4  0x000000000040af28 in main_loop_wait (timeout=1000) at /usr/src/debug/qemu-kvm-0.12.1.2/vl.c:4058
#5  0x00000000004282aa in kvm_main_loop () at /usr/src/debug/qemu-kvm-0.12.1.2/qemu-kvm.c:2133
#6  0x000000000040dfab in main_loop (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>)
    at /usr/src/debug/qemu-kvm-0.12.1.2/vl.c:4274
#7  main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at /usr/src/debug/qemu-kvm-0.12.1.2/vl.c:6421


versions: 

vdsm-4.9-10.el6.x86_64
qemu-kvm-0.12.1.2-2.96.el6.x86_64
libvirt-0.8.1-15.el6.x86_64
2.6.32-44.1.el6.x86_64 (kernel)


How reproducible: hard - try load 60 vms on server, and kill their qemu-process

Comment 1 Cao, Chen 2010-07-26 07:03:09 UTC
why 6.1 bug?

make it block rhel6kvmtier1,
we could remove the blocker if the bug is indeed against rhel6.1.

Comment 2 RHEL Program Management 2010-07-26 07:17:37 UTC
This issue has been proposed when we are only considering blocker
issues in the current Red Hat Enterprise Linux release.

** If you would still like this issue considered for the current
release, ask your support representative to file as a blocker on
your behalf. Otherwise ask that it be considered for the next
Red Hat Enterprise Linux release. **

Comment 4 Marcelo Tosatti 2010-08-30 18:42:15 UTC
Please describe in more detail how you killed the vms.

Comment 5 Haim 2010-08-30 19:43:22 UTC
(In reply to comment #4)
> Please describe in more detail how you killed the vms.

you can do it either by kill qemu process with 'pkill qemu' or use vdsm 
and send stop command towards vm id (should behave the same). 

configuration (layers): 

-rhevm
-vdsm  
-libvirt
-qemu

Comment 6 Glauber Costa 2010-11-04 18:15:13 UTC
Is it kill as in SIGKILL or kill as in sending a SIGSTOP?
I am puzzled by your comment that says it is the same as stopping the machine.

If it is a SIGSTOP, then it raises in importance IMHO.