Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 586578 Details for
Bug 824384
Resolution changes in loop on guest results in Sigabrt
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
proposed fix patch 2
0002-server-red_worker-fix-red_wait_pipe_item_sent.patch (text/plain), 2.45 KB, created by
Yonit Halperin
on 2012-05-24 08:33:37 UTC
(
hide
)
Description:
proposed fix patch 2
Filename:
MIME Type:
Creator:
Yonit Halperin
Created:
2012-05-24 08:33:37 UTC
Size:
2.45 KB
patch
obsolete
>From d691602784b3592fdd4e2e54cddc29f53fafdfef Mon Sep 17 00:00:00 2001 >From: Yonit Halperin <yhalperi@redhat.com> >Date: Thu, 24 May 2012 11:05:58 +0300 >Subject: [PATCH spice-server 2/2] server/red_worker: fix > red_wait_pipe_item_sent > >Resolves: rhbz#824384 > >red_wait_pipe_item_sent mistakingly returned without waiting for sending the given pipe item >when the channel wasn't blocked. As a result, we failed when we had to >destroy a surface (e.g., QXL_IO_DESTROY_ALL_SURFACES) and to release all >the drawables that are depended on it (by removing them or waiting they will be sent). >In addition, red_wait_pipe_item_sent increased and decreased the reference to the pipe item >using channel_cbs->hold_item, and channel_cbs->release_item. However, >these calls can be called only by red_channel, otherwise >display_channel_client_release_item_before_push is called twice and >leads to a double call to ring_remove(&dpi->base). >Instead ref/put_drawable_pipe_item should be called. >--- > server/red_worker.c | 12 +++++------- > 1 files changed, 5 insertions(+), 7 deletions(-) > >diff --git a/server/red_worker.c b/server/red_worker.c >index 2709486..c712180 100644 >--- a/server/red_worker.c >+++ b/server/red_worker.c >@@ -1998,6 +1998,7 @@ static void red_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int > } > > if (depend_found) { >+ spice_debug("surface %d dependent item found %p, %p", surface_id, drawable, item); > if (force) { > break; > } else { >@@ -10334,16 +10335,13 @@ static void red_wait_outgoing_items(RedChannel *channel) > /* TODO: more evil sync stuff. anything with the word wait in it's name. */ > static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item) > { >- RedChannel *channel = rcc->channel; >+ DrawablePipeItem *dpi; > uint64_t end_time; > int item_in_pipe; > >- if (!red_channel_client_blocked(rcc)) { >- return; >- } >- > spice_printerr(""); >- channel->channel_cbs.hold_item(rcc, item); >+ dpi = SPICE_CONTAINEROF(item, DrawablePipeItem, dpi_pipe_item); >+ ref_drawable_pipe_item(dpi); > > end_time = red_now() + CHANNEL_PUSH_TIMEOUT; > >@@ -10366,7 +10364,7 @@ static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item) > } else { > red_wait_outgoing_item(rcc); > } >- channel->channel_cbs.release_item(rcc, item, FALSE); >+ put_drawable_pipe_item(dpi); > } > > static void surface_dirty_region_to_rects(RedSurface *surface, >-- >1.7.7.6 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 824384
:
586315
|
586577
| 586578