Bug 1235732

Summary: spice-gtk shows outdated screen state after migration [qemu-kvm-rhev]
Product: Red Hat Enterprise Linux 7 Reporter: David Jaša <djasa>
Component: qemu-kvm-rhevAssignee: Gerd Hoffmann <kraxel>
Status: CLOSED ERRATA QA Contact: Guo, Zhiyi <zhguo>
Severity: low Docs Contact:
Priority: unspecified    
Version: 7.2CC: chayang, dblechte, djasa, fziglio, huding, juzhang, knoel, kraxel, mrezanin, qizhu, rbalakri, rduda, tpelka, uril, virt-maint
Target Milestone: rc   
Target Release: 7.2   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-rhev-2.6.0-15.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1355730 (view as bug list) Environment:
Last Closed: 2016-11-07 20:25:42 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: 1355730    
Attachments:
Description Flags
screencast
none
video reproducer
none
bug fix video none

Description David Jaša 2015-06-25 15:17:39 UTC
Description of problem:
spice-gtk shows outdated screen state after migration.

Version-Release number of selected component (if applicable):
client RHEL 7.2:
spice-gtk3-0.26-3.el7.x86_64
virt-viewer-2.0-3.el7.x86_64
host RHEL 7.2:
spice-server-0.12.4-9.el7.x86_64
qemu-kvm-1.5.3-93.el7.x86_64
guest RHEL 7.1 & 7.2:
Gnome-shell desktop environment, KMS driver

How reproducible:


Steps to Reproduce:
1. run an application for some time
2. close the application
3. migrate the VM

Actual results:
1. after migration, an old screen state is displayed for few dozen of seconds. when movement of some currently-existing window occurs, parts of ghost window start disappearing
2. after some time, the screen readjusts to the current state
3. after repeated migration, old screen state is displayed again

Expected results:
no caching artifacts occur

Additional info:

Comment 1 David Jaša 2015-07-02 15:00:06 UTC
Created attachment 1045535 [details]
screencast

Example. What I did is:
0. connection established, migration started
1. started screencast
2. minimized Firefox in the guest (0:02)
3. migration finished, Firefox's guest appeared (0:13)
4. click into the desktop that pretends to be Firefox triggers update (0:20)
5. end of screencast

* Without click in point 4., the stale image would linger far longer.
* happens with rhel7 client and guest against rhel7 and fedora hosts, rhel6 wasn't tested (yet), no other guest was tested (yet)

Comment 2 Frediano Ziglio 2015-07-13 13:26:25 UTC
Where does this stale image came? Was it before the screencast?

Comment 3 David Jaša 2016-01-26 16:42:59 UTC
Created attachment 1118554 [details]
screencast including admin portal

(In reply to Frediano Ziglio from comment #2)
> Where does this stale image came? Was it before the screencast?

Yes, it's what was on the screen ~1 m before the migration. The bug is still present as of RHEL 7.2 (all of client/host/guest) as you can see in this full screencast (client and portal):
0:10 start of migration with static desktop
0:13 window layout change
0:24 migration finished, layout from before 0:13 is shown till desktop redraw
0:31 resuming video playback
0:44 start of another migration
1:03 (approx.) video gets choppy, migration gets stuck (bug 1247237)
1:07 video is paused, migration finishes, client displays pre-0:13 state again

Comment 4 Uri Lublin 2016-01-28 11:58:26 UTC
With upstream git code running on a Fedora-23 host:
  I can reproduce with Fedora-23 guest.
  But works-for-me with Windows 7 guest.

Comment 5 David Jaša 2016-01-28 17:49:04 UTC
RHEL 7 guest status @ 7.2 host:
7.0/KMS, 7.2/KMS - affected
7.2/UMS - not affected

Comment 6 Uri Lublin 2016-06-09 23:00:32 UTC
I think the problem is in qemu-kvm, specifically reverting
commit e25139b34d27847ff19140adada77ea4c5398863 seems to solve this problem.

Moving to qemu-kvm component

Comment 7 Ademar Reis 2016-06-21 19:23:52 UTC
(In reply to Uri Lublin from comment #6)
> I think the problem is in qemu-kvm, specifically reverting
> commit e25139b34d27847ff19140adada77ea4c5398863 seems to solve this problem.
> 
> Moving to qemu-kvm component

Gerd, please take a look.

commit e25139b34d27847ff19140adada77ea4c5398863
Author: Yonit Halperin <yhalperi>
Date:   Wed Feb 15 11:22:15 2012 +0200

    qxl: set only off-screen surfaces dirty instead of the whole vram
    
    We used to assure the guest surfaces were saved before migration by
    setting the whole vram dirty. This patch sets dirty only the areas
    that are actually used in the vram.
    
    Signed-off-by: Yonit Halperin <yhalperi>
    Signed-off-by: Gerd Hoffmann <kraxel>

Comment 8 Gerd Hoffmann 2016-06-22 08:09:19 UTC
(In reply to Ademar Reis from comment #7)
> (In reply to Uri Lublin from comment #6)
> > I think the problem is in qemu-kvm, specifically reverting
> > commit e25139b34d27847ff19140adada77ea4c5398863 seems to solve this problem.
> > 
> > Moving to qemu-kvm component
> 
> Gerd, please take a look.
> 
> commit e25139b34d27847ff19140adada77ea4c5398863
> Author: Yonit Halperin <yhalperi>
> Date:   Wed Feb 15 11:22:15 2012 +0200
> 
>     qxl: set only off-screen surfaces dirty instead of the whole vram
>     
>     We used to assure the guest surfaces were saved before migration by
>     setting the whole vram dirty. This patch sets dirty only the areas
>     that are actually used in the vram.
>     
>     Signed-off-by: Yonit Halperin <yhalperi>
>     Signed-off-by: Gerd Hoffmann <kraxel>

Doesn't handle primary surfaces correctly in case they are living in vram not ram.  Thats why it happens with newer (kms) linux guests only, all other guest drivers place the primary surface in ram.

Comment 10 Miroslav Rezanina 2016-07-22 09:11:51 UTC
Fix included in qemu-kvm-rhev-2.6.0-15.el7

Comment 12 Guo, Zhiyi 2016-09-12 12:17:00 UTC
Reproduce this issue with qemu-kvm-rhev-2.6.0-14.el7.x86_64.
Guest used: rhel7.3 guest
Follow steps in comment 1, I record a video reproducer

Verified with qemu-kvm-rhev-2.6.0-20.el7.x86_64, also record a video to show bug fixed

Comment 13 Guo, Zhiyi 2016-09-12 12:19:18 UTC
Created attachment 1200197 [details]
video reproducer

Comment 14 Guo, Zhiyi 2016-09-12 12:20:27 UTC
Created attachment 1200198 [details]
bug fix video

Comment 15 Guo, Zhiyi 2016-09-12 12:22:03 UTC
Move to verified per comment 12 & 13 &14

Comment 17 errata-xmlrpc 2016-11-07 20:25:42 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.

https://rhn.redhat.com/errata/RHBA-2016-2673.html

Comment 18 Dr. David Alan Gilbert 2017-03-23 09:06:53 UTC
*** Bug 1130356 has been marked as a duplicate of this bug. ***