Bug 41523

Summary: ASSERT red_channel_client_no_item_being_sent(&dcc->common.base) failed
Product: Spice Reporter: Hans de Goede <jwrdegoede>
Component: serverAssignee: Yonit Halperin <yhalperi>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: fix the placing of the ASSERT

Description Hans de Goede 2011-10-06 07:00:22 UTC
I hit this while debugging issues with spice-gtk (using spicy) and multi monitor
guests. I hit an assert in spicy while it was running under the debugger and left
it sitting in the debugger (and thus stuck).

This caused spice server to first say:
red_wait_outgoing_item: blocked
red_wait_outgoing_item: timeout

Followed by:
red_clear_surface_drawables_from_pipes: ASSERT red_channel_client_no_item_being_sent(&dcc->common.base) failed

I'm not sure if the ASSERT only happened after I really quit the asserted spicy or before.

Here is a bt:
#0  0x0000003000836435 in raise () from /lib64/libc.so.6
#1  0x0000003000837d4b in abort () from /lib64/libc.so.6
#2  0x00007ffff7cf36e7 in red_clear_surface_drawables_from_pipes (
    worker=<optimized out>, surface_id=<optimized out>, force=<optimized out>, 
    wait_for_outgoing_item=<optimized out>) at red_worker.c:2009
#3  red_clear_surface_drawables_from_pipes (worker=0x7ffff47325e0, surface_id=
    0, force=1, wait_for_outgoing_item=1) at red_worker.c:1996
#4  0x00007ffff7cf78a4 in handle_dev_destroy_primary_surface (worker=
    0x7ffff47325e0) at red_worker.c:10322
#5  handle_dev_input (listener=0x7ffff47325e0, events=<optimized out>)
    at red_worker.c:10476
#6  0x00007ffff7cf95b2 in red_worker_main (arg=<optimized out>)
    at red_worker.c:10811
#7  0x0000003001407d31 in start_thread () from /lib64/libpthread.so.0
#8  0x00000030008efdfd in clone () from /lib64/libc.so.6
Comment 1 Yonit Halperin 2011-10-06 07:55:15 UTC
red_wait_outgoing_item timeouted and as a result there was a request to disconnect the client but the procedure that called red_wait_outgoing_item (red_clear_surface_drawables_from_pipes) assumes red_wait_outgoing_item succeeded and thus, it expected red_channel_client_no_item_being_sent to be true
Comment 2 Yonit Halperin 2011-10-18 23:53:40 UTC
Created attachment 52512 [details] [review]
fix the placing of the ASSERT

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.