Bug 95365 - Crash when streaming starts
Summary: Crash when streaming starts
Status: RESOLVED FIXED
Alias: None
Product: Spice
Classification: Unclassified
Component: server (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Spice Bug List
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-05-12 16:30 UTC by Pavel Grunt
Modified: 2016-05-13 11:40 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
qemu commandline (2.37 KB, text/plain)
2016-05-12 16:30 UTC, Pavel Grunt
Details

Description Pavel Grunt 2016-05-12 16:30:54 UTC
Created attachment 123649 [details]
qemu commandline

spice server crashes when streaming starts.

spice-server commit 7673b388f5c8479f8f8184a46543f68d3ca7fc22

Steps to reproduce:
1. run a win7 vm with "streaming-video=all" (see attachment for more info)
2. connect with a client
3. make it stream (I used some online streaming in firefox)
4. if it does not crash, try to resize guest, or reconnect during streaming

** (process:23484): CRITICAL **: red_upgrade_item_free: assertion 'item->base.refcount != 0' failed

** (process:23484): CRITICAL **: red_upgrade_item_free: assertion 'item->base.refcount != 0' failed

(process:23484): Spice-ERROR **: display-channel.c:1844:display_channel_destroy_surfaces: assertion `!display->surfaces[i].context.canvas' failed
Comment 1 Pavel Grunt 2016-05-12 20:43:37 UTC
git bisect says:
18d3876b78c7f19c577da000d322dbd44e63e456 is the first bad commit
commit 18d3876b78c7f19c577da000d322dbd44e63e456
Author: Jonathon Jongsma <jjongsma@redhat.com>
Date:   Thu Apr 14 16:12:50 2016 -0500

    UpgradeItem: use base PipeItem for refcounting
    
    No need to re-implement refcounting in this subclass.
    
    Acked-by: Frediano Ziglio <fziglio@redhat.com>

:040000 040000 2977c2e13bb23a25d8aa09b6f085dd231181ecf3 b3658ce36b7f761baca006bd2e0d9f0f5182afd2 M	server
Comment 2 Frediano Ziglio 2016-05-12 21:32:20 UTC
static void upgrade_item_free(UpgradeItem *item)
{
    g_return_if_fail(item != NULL);
    g_return_if_fail(item->base.refcount != 0);

    drawable_unref(item->drawable);
    free(item->rects);
    free(item);
}

the refcount condition is inverted.
Comment 3 Frediano Ziglio 2016-05-13 11:40:09 UTC
Fix into master

Thanks


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.