[Spice-devel] [bug] tripping an assert (regularly!) in release_drawable in red_worker.c

Nahum Shalman nshalman at elys.com
Tue May 1 12:42:04 PDT 2012


On 05/01/2012 01:17 PM, Yonit Halperin wrote:
> I'm doing some changes in this part of the code, but so far I haven't 
> tripped into this assert (before applying my changes, and without 
> pulling changes from the last week or two). Can you bisect this?
> What guest are you running?
I probably can't bisect this, but I can provide a bunch more detail for you.

Guest OS: Fedora 16

Things we've noticed:
Using the stock xorg-x11-drv-qxl from the repositories, it is not 
possible to disable the caching or surfaces features of the xorg 
driver.  Performance is not optimal.

If you recompile the xorg qxl driver from source from about 2 weeks ago, 
you can cause the spice server to start tripping over asserts if you put 
a file like this into xorg.conf.d and start watching videos in the VM:
----
Section "Device"
         Identifier  "Videocard0"
         Driver      "qxl"
         Option  "DPI"   "96 x 96"
         Option "ENABLE_IMAGE_CACHE" "False"
         Option "ENABLE_FALLBACK_CACHE" "False"
         Option "ENABLE_SURFACES" "False"
EndSection
----

Without that file, if you run Firefox, you get tons of "Out of surfaces" 
messages in the Xorg log file, and firefox's performance goes down to 
unusable.  Google chrome running at the same time doesn't cause the spew 
of messages, and performs fine.

With that same driver, if you remove the 2 lines with CACHE in them, but 
leave in the line to disable surfaces, Firefox stops causing
the spew of "out of surfaces" messages (because there are none) and 
performs fine.

If you recompile the xorg qxl driver from source as of today, and don't 
disable any of the features, running Firefox no longer causes a spew of 
"out of surfaces" messages, but the performance is still somewhat shoddy.

If you disable the surfaces only (leave caches enabled), firefox 
performance goes back to performing well.

So, to sum up:

If you want to cause assertion failures in the spice server, manually 
compile the xorg qxl driver from 2 weeks ago and install it in a fedora 
16 VM, and disable the cache features and the surface feature, and then 
try to stream video.  It seems like a badly behaving qxl driver can 
crash the spice server which is a flaw.  It should detect a badly 
behaving client more robustly and try to recover.

There are still performance problems with the surfaces feature, and GTK 
applications seem to hit them more so than non-gtk applications.

On the bright side it seems like with mainline spice server and mainline 
xorg qxl driver, if you disable the surfaces, performance on Fedora 16 
goes back to being the awesomeness that Spice is supposed to deliver. :)

Thanks!
-Nahum


More information about the Spice-devel mailing list