Bug 866929

Summary: seamless migration: assert at destination side after migration
Product: Red Hat Enterprise Linux 6 Reporter: Yonit Halperin <yhalperi>
Component: spice-serverAssignee: Yonit Halperin <yhalperi>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.4CC: acathrow, cfergeau, dblechte, dyasny, mbarta, mkenneth, mkrcmari, uril
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: spice-server-0.12.0-5.el6 Doc Type: Bug Fix
Doc Text:
No documentation is needed. This bug is related to a new feature in RHEL-6.4, spice seamless migration. It was found and fixed during RHEL-6.4 development phase. Cause: Consequence: Fix: Result:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 10:03:32 UTC Type: Bug
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: 881827    

Description Yonit Halperin 2012-10-16 10:49:40 UTC
Description of problem:

qemu sometimes aborts after migration of Windows 7 guest, when the migration is executed during rebooting the guest.

More specifically:
When executing migration, after the vm migration has completed, but before spice display channel migration completed (i.e., the server display channel hasn't yet received from the client the migration data required for restoring its state).
If:(1) The qxl command ring is not empty, and (2) reset of qxl occurs,
the destination qemu will abort due to 
assert(!spice_display_running || SPICE_RING_IS_EMPTY(&ram->cmd_ring));
(see the stack trace below)

It is more easy to reproduce this over WAN, because then spice seamless migration data transfer takes longer, and also, the cmd ring is more likely to be occupied with commands.

The origin of this bug can also cause other inconsistencies, when instead of reboot, there are resolution changes during migration.

#0  0x00007ffff41ec285 in raise () from /lib64/libc.so.6
#1  0x00007ffff41edb9b in abort () from /lib64/libc.so.6
#2  0x00007ffff41e4e9e in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007ffff41e4f42 in __assert_fail () from /lib64/libc.so.6
#4  0x0000000000593028 in qxl_check_state (d=<optimized out>) at /home/tlv/yhalperi/projects/redhat/qemu/hw/qxl.c:911
#5  qxl_check_state (d=<optimized out>) at /home/tlv/yhalperi/projects/redhat/qemu/hw/qxl.c:906
#6  0x0000000000593045 in qxl_reset_state (d=0x1557530) at /home/tlv/yhalperi/projects/redhat/qemu/hw/qxl.c:919
#7  0x0000000000594910 in qxl_hard_reset (d=0x1557530, loadvm=0) at /home/tlv/yhalperi/projects/redhat/qemu/hw/qxl.c:955
#8  0x000000000041253d in qemu_system_reset () at /home/tlv/yhalperi/projects/redhat/qemu/vl.c:3343
#9  0x0000000000430cc1 in qemu_kvm_system_reset () at /home/tlv/yhalperi/projects/redhat/qemu/qemu-kvm.c:1978
#10 kvm_main_loop () at /home/tlv/yhalperi/projects/redhat/qemu/qemu-kvm.c:2258
#11 0x000000000040c6aa in main_loop () at /home/tlv/yhalperi/projects/redhat/qemu/vl.c:4202
#12 main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at /home/tlv/yhalperi/projects/redhat/qemu/vl.c:6430

Comment 1 Yonit Halperin 2012-11-12 17:27:02 UTC
fixed it upstream

Comment 6 errata-xmlrpc 2013-02-21 10:03:32 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2013-0529.html