[Spice-devel] HD videos cause spice server to assert.
Rozen Lin
rozen.lin at sinobot.com.cn
Fri Jan 4 01:52:51 PST 2013
Hi,All,
Currently when testing the HD videos, such as the 1080p videos, in
Spice, I found occasionally the spice-server may assert in red_worker
such as:
dev_destroy_surfaces refs=1 surface_id=179
dev_destroy_surfaces refs=0 surface_id=182
validate_surface: failed on 164
validate_surface: panic !worker->surfaces[surface_id].context.canvas
or
spice_server_char_device_add_interface: CHAR_DEVICE vdagent
main_channel_handle_parsed: agent start
dev_destroy_surfaces: ASSERT !worker->surfaces[i].context.canvas failed
/usr/lib/libspice-server.so.1(+0xbe105)[0x7fdea67cf105]
/usr/lib/libspice-server.so.1(+0x35ba0)[0x7fdea6746ba0]
/usr/lib/libspice-server.so.1(+0x1b3d3)[0x7fdea672c3d3]
/usr/lib/libspice-server.so.1(+0x3497c)[0x7fdea674597c]
/lib/libpthread.so.0(+0x69ca)[0x7fdea7b5b9ca]
/lib/libc.so.6(clone+0x6d)[0x7fdea5fdb69d]
check the code:
static inline void dev_destroy_surfaces(RedWorker *worker)
{
int i;
flush_all_qxl_commands(worker);
//to handle better
for (i = 0; i < NUM_SURFACES; ++i) {
if (worker->surfaces[i].context.canvas) {
destroy_surface_wait(worker, i);
if (worker->surfaces[i].context.canvas) {
red_destroy_surface(worker, i);
}
ASSERT(!worker->surfaces[i].context.canvas);
}
}
...
here seems the destroy_surface_wait() has not released all the refs on
the canvas which causes the last red_destroy_surface() does nothing and
then ASSERT() after it.
Is this a known issue in such high image/stream pressure case? Could any
one share some clues for the fix, thanks in advance!
Best regards,
Rozen Lin.
More information about the Spice-devel
mailing list