Bug 95032

Summary: spicy hangs with webdav
Product: Spice Reporter: Pavel Grunt <pavelgrunt>
Component: spice-gtkAssignee: Spice Bug List <spice-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: blocker    
Priority: medium CC: bugzilla
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: backtrace

Description Pavel Grunt 2016-04-20 09:57:11 UTC
Created attachment 123086 [details]
backtrace

Since gtask spicy hangs when it should be disconnected by another client

Steps to reproduce:
1) connect with spicy client to a guest which has webdav
2) connect with another spicy client to the same guest

Actual results:
the first client hangs, the second client is connected

Expected results:
the first client is disconnected by the second client

Additional info:
There is already a FIXME in the code telling what is going on - "disconnecting in read_cancelled() causes a deadlock" [0]
Fabiano's gtask-helper [1] avoids the issue, but imo we should rewrite the code to fit better to gtask

[0] https://cgit.freedesktop.org/spice/spice-gtk/tree/src/vmcstream.c#n236
[1] https://lists.freedesktop.org/archives/spice-devel/2016-March/027561.html
Comment 1 Victor Toso 2016-05-02 11:47:29 UTC
> There is already a FIXME in the code telling what is going on -
> "disconnecting in read_cancelled() causes a deadlock" [0]

(...)

> [0] https://cgit.freedesktop.org/spice/spice-gtk/tree/src/vmcstream.c#n236

The reference for the bug in the comment is:
https://bugzilla.gnome.org/show_bug.cgi?id=705395
Comment 2 Victor Toso 2016-05-02 12:00:54 UTC
> The reference for the bug in the comment is:
> https://bugzilla.gnome.org/show_bug.cgi?id=705395

This is an bug indeed and sadly needs good handling on cancel_cb in order to avoid the deadlock. I had the same issue around spice-pulse.c on the volume-sync stuff [2]

https://cgit.freedesktop.org/spice/spice-gtk/tree/src/spice-pulse.c#n939

But that was before the gtask stuff. Let's see.

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.