Bug 824384

Summary: Resolution changes in loop on guest results in Sigabrt
Product: Red Hat Enterprise Linux 6 Reporter: Marian Krcmarik <mkrcmari>
Component: spice-serverAssignee: Yonit Halperin <yhalperi>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.3CC: acathrow, byount, cfergeau, dblechte, djasa, dyasny, mkenneth, ngalvin, uril, yhalperi
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: spice-server-0.12.0-1.el6 Doc Type: Bug Fix
Doc Text:
Cause: In red_wait_pipe_item_sent red_worker increased and decreased the reference to the pipe item using channel_cbs->hold_item, and channel_cbs->release_item. These calls can be called only by red_channel Consequence: display_channel_client_release_item_before_push is called twice and leads to a double call to ring_remove(&dpi->base). Fix: Instead ref/put_drawable_pipe_item are called. Result: For each item ring_remove is called once, as it should. spice-server does not abort.
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-02-21 10:03:05 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:
Attachments:
Description Flags
Backtrace from qemu-kvm when doing multiple resolution changes
none
fix patch 1
none
proposed fix patch 2 none

Description Marian Krcmarik 2012-05-23 11:30:40 UTC
Created attachment 586315 [details]
Backtrace from qemu-kvm when doing multiple resolution changes

Description of problem:
When doing resolution changes in a loop on guest, qemu-kvm process crashes with sigabrt, Sometimes I need to wait for longer time, sometimes It occurs after several resolution changes.
Following ASSERT os raised:
dev_destroy_surfaces: ASSERT !worker->surfaces[i].context.canvas failed

I am attaching bt from qemu-kvm process

Version-Release number of selected component (if applicable):
spice-server-0.10.1-10.el6.x86_64
qemu-kvm-0.12.1.2-2.292.el6.x86_64
spice-gtk-0.11-10.el6.x86_
WindowsXP guest with qxl driver with off-screen surfaces support installed 


How reproducible:
100% (If you try long enough)

Steps to Reproduce:
1. Connect to a Windows guest with qxl driver installed.
2. Run resolution changes in loop
  
Actual results:
sigabrt is catch on qemu-kvm process.

Expected results:
Smooth resolution changes.

Additional info:

Comment 1 Christophe Fergeau 2012-05-23 11:43:41 UTC
This is
spice_assert(ring->next != NULL && ring->prev != NULL);
triggering in spice-server/common/ring.h

How do you do these resolution changes in a loop? Manually or do you have a tool to do that?

Comment 3 Marian Krcmarik 2012-05-23 12:02:45 UTC
(In reply to comment #1)
> This is
> spice_assert(ring->next != NULL && ring->prev != NULL);
> triggering in spice-server/common/ring.h
> 
> How do you do these resolution changes in a loop? Manually or do you have a
> tool to do that?

I am running the script from bug #578845.

Comment 4 Yonit Halperin 2012-05-24 08:33:03 UTC
Created attachment 586577 [details]
fix patch 1

Comment 5 Yonit Halperin 2012-05-24 08:33:37 UTC
Created attachment 586578 [details]
proposed fix patch 2

Comment 6 Yonit Halperin 2012-05-24 08:36:24 UTC
The bug can occur when the primary surface or all the surfaces are destroyed (e.g., resolution changes, reset, switching users).

Comment 8 Marian Krcmarik 2012-07-27 16:38:12 UTC
RHEL6.4 QA ACK

Comment 13 errata-xmlrpc 2013-02-21 10:03:05 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

Comment 14 Christophe Fergeau 2013-05-30 09:32:20 UTC
*** Bug 863495 has been marked as a duplicate of this bug. ***